c語言的操作符和部分其他補充

2021-09-25 05:41:12 字數 2135 閱讀 7638

單目運算子》算術運算子》關係運算子》邏輯運算子》條件運算子》賦值運算子》逗號運算子

其次:單目》雙目》三目

注意:這些排列為大概,簡單記憶的排序,部分不符的需要自己記憶,不過絕大部分都是這個。

運算子除了優先順序,還需要注意的就是結合性。除了賦值外,其餘基本上都是從左向右結合,賦值是從右向左。

補充:sizeof()為乙個求括號內資料型別所佔位元組數的乙個運算子

typeof()為乙個求型別的運算子

分量運算子:「.」 「—>」

強制轉換:(型別)乙個數值

兩個位址不能相加

1.位運算的運算元必須是整數(包括char,至於為什麼看我關於c語言資料型別的博文)

2.移位操作

左移:高位捨棄,低位補0

右移:無符號型別(unsigned)高位補0,低位捨棄

有符號型別(signed)高位補符號位,低位捨棄

邏輯運算的惰性運算(提高運算效率,即其產生問題),一旦可以判斷運算為真或者為假,則不會繼續其他條件判斷了

例如

int i,j,k;

i=j=1;

k=2;

if((j++||k++)&&i++)

printf(「%d,%d,%d\n」,i,j,k);

輸出結果

2,2,2
分析:因為j=1,已經可以判斷 「j++||k++」,那麼k++就不會執行,且j判斷後會自加,但是由於 (j++||k++)為真,不足以判斷&&的結果,所以i會++。所以結果是j++,i++,k不會++,即2,2,2

需要注意scanf裡面的內容必須與輸入的內容格式一致,否則可能會出千奇百怪的情況。

其次在linux下gcc中使用scanf可能第二個scanf會直接跳過,我找了很多,也試驗了部分,最後發現最好在每個scanf後面加乙個getchar();就可以,因為內容快取問題(原因網上看的,方法已經試驗可以)

printf(「%2d」,a);

這裡的2主要是讓a輸出只佔2個位元組(或者也不能這樣說),主要是有時候主要更加美觀,看下面我寫的99乘法表的效果。

#include "stdio.h"

void main()

printf("\n");

}}

結果

1*1=1 

1*2=2 2*2=4

1*3=3 2*3=6 3*3=9

1*4=4 2*4=8 3*4=12 4*4=16

1*5=5 2*5=10 3*5=15 4*5=20 5*5=25

1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36

1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49

1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64

1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

分析:部分資料沒有對齊,原因是以原有形式輸出,沒有控制輸出

試試控制輸出的

#include "stdio.h"

void main()

printf("\n");

}}

結果

1*1= 1 

1*2= 2 2*2= 4

1*3= 3 2*3= 6 3*3= 9

1*4= 4 2*4= 8 3*4=12 4*4=16

1*5= 5 2*5=10 3*5=15 4*5=20 5*5=25

1*6= 6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36

1*7= 7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49

1*8= 8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64

1*9= 9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

分析:明顯整齊了很多,而且最高也就十位,只需2個%d

@4

c語言 位操作符和邏輯操作符

按位與 按位或 按位異或 注 他們的運算元必須是整數。兩個整數字元位有假 0 就為假 0 只有全為真 1 就為真 1 舉個例子 老師叫兩個學生來辦公室,說張三與 李四過來,如果只乙個人過去就不滿足老師說的話 為假 必須兩個人都過去 為真 兩個整數字元位只要有真就為真,只有全為假 0 就為假 0 舉個...

c語言操作符 位操作符 移位操作符

1 按位操作符 1.1 按位 與 雙目運算子 僅當兩個運算元都為1時,結果為1,否則為0。參與運算的數以補碼方式出現。例 9 5 1 0000 1001 9的補碼 0000 0101 5的補碼 0000 0001 1的補碼 應用 a 通常將某些位清零或保留某些位。例如 將a的高八位清零,保留低八位,...

C語言 , 操作符

例如 define to string s s 將會使編譯器把以下命令 cout to string hello world endl 理解為cout hello world endl 例如 define concatenate x,y x y int xy 10 將會使編譯器把 cout conc...