C語言各種操作符透徹理解上篇
前言:在我們程序編寫領(lǐng)域,操作符給我們提供了很多的運(yùn)算便利,但操作符琳瑯滿目,我們要怎樣用好它們呢,下面就帶你來熟悉熟悉這些多樣的操作符。
操作符分類:
算術(shù)操作符 、移位操作符 、位操作符 、賦值操作符 、單目操作符 、關(guān)系操作符 、邏輯操作符 、條件操作符 、逗號表達(dá)式 、下標(biāo)引用、函數(shù)調(diào)用和結(jié)構(gòu)成員
1.算數(shù)操作符(+、--、*、%、/)
這里我們著重講一下取余(模)%操作符和除法/操作符
#include<stdio.h> int main() { //取余(模)、除法 int ret1 = 10 % 3;//取余(模),得到的結(jié)果是相除之后的余數(shù) int ret2 = 10 / 3;//除法-得到的結(jié)果是商 printf("ret1=%d\nret2=%d\n", ret1, ret2); //當(dāng)/(除號)兩端都是整數(shù)的時候,執(zhí)行的是整數(shù)除法 //當(dāng)兩端只要有一個浮點(diǎn)數(shù),執(zhí)行的就是浮點(diǎn)數(shù)的除法 double ret = 10.0 / 3; printf("%lf\n", ret); return 0; }
2.移位操作符(左移<< 和 右移>>)
這里注意?。?!
移位操作符的操作數(shù)只能是整數(shù),整數(shù)在內(nèi)存中存的是補(bǔ)碼,但最后輸出的,也就是我們看到的,是原碼。
(1)左移
#include<stdio.h> int main() { //2.移位操作符 //左移 int a = 5; //把a(bǔ)在內(nèi)存中存儲的二進(jìn)制位向左移動2位 int b = a << 2; printf("%d\n", b); printf("%d\n", a); }
?計(jì)算演示:
(2)右移
分為算數(shù)右移和邏輯右移,具體是哪種右移取決于編譯器。
算數(shù)右移:右邊丟棄,左邊補(bǔ)原來的符號位(負(fù)數(shù)右移幾位左邊就添幾個1)
邏輯右移:右邊丟棄,左邊補(bǔ)0
(常見的編譯器都是算數(shù)右移)
#include<stdio.h> int main() { int a = 5; int b = a >> 2; printf("%d\n", b); return 0; }
3.位操作符
我們直接上代碼
#include<stdio.h> int main() { int a = 3; int b = -5; int x = a & b; int y = a | b; int z = a ^ b; printf("%d %d %d", x, y, z); return 0; }
(1)按位與&
相同為1,不同為0
(2)按位或
只要有1則為1,兩個同時為0才為0
(來個例題)
不能創(chuàng)建臨時變量(第三個變量),實(shí)現(xiàn)兩個數(shù)的交換
第一種,采用算數(shù)操作符來解決
#include<stdio.h> int main() { int a = 3, b = 5; printf("交換前:a=%d b=%d\n", a, b); a = a + b;//a+b=8 b = a - b;//此時的a=8,b還是5,則b=8-5=3,也就是之前的a a = a - b;//次時的a還是8,而b已經(jīng)賦值為3,所以這時的a=8-3=5,也就是之前的b printf("交換后:a=%d b=%d\n", a, b); return 0; }
?但是這種方法不夠完美,當(dāng)a很大,b也很大的時候,則放不進(jìn)整型里面,存在溢出問題,不能解決所有問題。那么我們就來看下第二種方法:使用異或
(相同的異或?yàn)?,任何數(shù)與0異或還是原的數(shù))
#include<stdio.h> int main() { int a = 3, b = 5; printf("交換前:a=%d b=%d\n", a, b); a = a ^ b; b = a ^ b;//相當(dāng)于a^b^b=a a = a ^ b;//相當(dāng)于a^b^a(此時的b=a)=b printf("交換后:a=%d b=%d\n", a, b); return 0; }
?但是這個方法的可讀性不高,也存在缺陷,如果你有更好的方法記得告訴博主哦!
4.賦值操作符
(1)=,沒什么好講的
這里要提一點(diǎn),連續(xù)賦值(不提倡),但要注意的是等號兩邊不能同時為常量
(2)復(fù)合賦值符
+= :a=a+b可以寫成a+=b
?-= :a=a-b可以寫成a-=b
*= :a=a*b可以寫成a*=b
下面以此類推
/= 、%= 、>>= 、<<= 、&= 、|= 、^=
好啦,操作符詳解的上篇今天就到這了,敬請期待下篇!??!
到此這篇關(guān)于C語言各種操作符透徹理解上篇的文章就介紹到這了,更多相關(guān)C語言 操作符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++日期類(Date)實(shí)現(xiàn)的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用C++語言實(shí)現(xiàn)日期類(Date),可以實(shí)現(xiàn)確定某年某月有多少天、打印日期等功能,感興趣的可以了解一下2022-07-07解決gcc編譯報(bào)錯unknown type name ‘bool‘問題
這篇文章主要介紹了解決gcc編譯報(bào)錯unknown type name ‘bool‘問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07