C語言運算子

2022-08-15 17:24:17 字數 2695 閱讀 6932

c語言運算子

一、算術運算

c語言一共有34種運算子,包括常見的加減乘除運算。

①. 加法:+ 還可以表示正號

②. 減法:- 還可以表示負號

③. 乘法:* 非數學意義上的x

④. 除法:/  注意1/2的值為0而非0.5

⑤. 取餘(模運算):兩個整數相除之後的餘數(注意兩邊都必須是整數,帶符號只和左值有關)

注意點:

①. int a=10.8;//資料精度丟失警告。結果為10——自動型別轉換

②. int a=(int)10.8;//無警告。把10.8強制轉換為整型——強制型別轉換

③. double c=10.6+6//結果為16.600000。在計算機中,拿兩個數值進行運算,則運算子兩邊的數值需要型別相同,如果不同則進行自動型別提公升。即把6轉為6.000000後再參與運算。

④. 參與運算的兩個數是什麼型別,那麼其結果就是什麼型別。int a=10/3結果為3,double b=10/3結果為3.000000;double c=10.0/3結果為3.333333。要求精確值可以進行強制型別轉換。double d=(double)3/2把3轉換為double型別變為3.000000,之後2進行自動型別提公升轉變為2.000000參與運算,結果為1.500000。也可以寫成3/(double)2。這種情況需要注意與對整體進行強制轉換的區別 double e=(double)(3/2)是先計算3/2的值為1再對1進行強制型別轉換,結果為1.000000。

二、賦值運算

(一)簡單賦值

int a=10+5;a=b=10;//從右向左,左邊不能為常量

(二)復合賦值

a=a+5;=>a+=5;

a=a*5;=>a*=5;

a+=5*6+4;=>a=a+(5*6+4)

三、自增自減運算

int a=10;

把a的值加1有四種方法:

①. a=a+1;

②. a+=1;

③. a++;

④. ++a;

簡單區分a++和++a。

int b;

int a=10;

b=++a; //a==11,b==11;a先把值加1為11,再賦值給b

b=a++; //a==11,b==10;a先把值10複製給b,a自己再加1為11

b=(a++)+(++a);  //a1==10,a2==12,b==22

b=(++a)+(a++);  //a1==11,a2==11,b==22

注意:int d=10++;//這種寫法是錯誤的,因為對常量進行自加和自減沒有任何意義。

四、sizeof

作用:用來計算變數,常量或者是一種資料型別所佔的記憶體位元組數。

基本形式:sizeof(變數名|常量|資料型別),完成之後返回乙個值。

①. sizeof 變數|常量

②. sizeof (變數|常量)

③. sizeof (資料型別)

注意:資料型別一定要用括號括起來,不能寫成sizeof 資料型別這樣的形式。

五、關係運算子

(一)條件判斷

預設情況下。在程式中寫出的每一句正確的**都會被執行,但很多時候我們需要在某個條件成立的情形下才執行某一段**,如登入操作,這種情況可以使用條件語句來完成。

(二)真假

在c語言中,條件成立稱為「真」,條件不成立稱為「假」。

c語言規定,任何數值都有真假性,任何非零值都為真,只有0才為假,無布林型別。

(三)關係比較

關係運算的結果只有兩種情況,如果條件成立就為真,值為1,如果條件不成立就為假,值為0。有6種運算子,分別是:(1)<  (2)<=  (3) >  (4) >=  (5)==  (6)!=

(四)使用注意

①. ==和!=優先順序相等,其他四個關係運算子的優先順序相等,且前者的優先順序低於後者。如2==3>1 應該先計算3>1

②. 關係運算子中,若優先順序相同,則「從左往右」結合。如4>3<2,先計算4>3

③. 關係運算子中的優先順序小於算術運算子。如3+4>8-2 相當於(3+4)> (8-2)

④. 練習5!=4+2*7>3==10 先計算5!=18>3==10,5!=1==10,1==10,假

六、邏輯運算子

邏輯運算的結果只有兩個:真(0)和假(1)

①. 與   &&   條件1&&條件2 只有的那個條件1和條件2都成立時,才為真否則為假。

②. 或   ||    條件1 ||條件2  當條件1或條件2中有乙個成立時就為真,都不成立時為假。

③. 非   !  !條件   取反

注意:邏輯運算子在進行運算時,只要能夠確定整體的真假性,後面的條件就不再進行而是直接忽略。

int a=b=10;

int c=(a>5)&&(++b>=11);//此時a==10,b==11,c==1

int c=(a<5)&&(++b>=11);//此時a==10,b==10,c==0

七、三目運算子

雙目:需要兩個值參與運算

單目:1個數值參與運算  如!5

三目:需要3個數值參與

格式:條件?數值1:數值2 

先判斷?前的條件,若條件成立則返回數值1,若條件不成立則返回條件2。

要求比較a和b的值,把數值大的存入到c中  c=a>b?a:b

比較a,b,c三個數的值,把最大的值存入到d中

int  abmax=(a>b)?a:b;

d=abmax>c:abmax:c;

C語言 運算子與 運算子

我們平時使用帶參巨集時,字串中的巨集引數是沒有被替換的。例如 輸出結果為 然而,我們期望輸出的結果是 5 20 2513 14 27 這該怎麼做呢?其實,c語言允許在字串中包含巨集引數。在類函式巨集 帶參巨集 中,號作為乙個預處理運算子,可以把記號轉換成字串。例如,如果a是乙個巨集形參,那麼 a就是...

C語言 運算子和 運算子

變數 代表 取變數的位址 變數 代表 指標型的變數 取址運算子 用來取得其運算元的位址。如果運算元 x 的型別為 t,則表示式 x 的型別是 t 型別指標 指向 t 的指標 取址運算子的運算元必須是在記憶體中可定址到的位址。換句話說,該運算子只能用於函式或物件 例如左值 而不可以用於位欄位,以及那些...

C語言運算子

1級優先順序左結合 圓括號 下標運算子 指向結構體成員運算子 結構體成員運算子 字尾增量運算子 字尾增量運算子 2級優先順序右結合 邏輯非運算子 按位取反運算子 字首增量運算子 字首增量運算子 負號運算子 型別 型別轉換運算子 指標運算子 位址與運算子 sizeof 長度運算子 3級優先順序左結合 ...