記得以前學c的時候老喜歡考 ++ 操作符,公司筆試面試題也出現過
在此提供一些題:我個人的理解放在最後
a :
int main()
//執行結果是15,
b:
int main()
//執行結果是15,
c:
int main()
//執行結果是13,
d;
int main()
//執行結果是20,
e:
int main()
{
int c=4;
int b;
b=(c++) + (c++)+ (++c)+(c++) ;
printf("b= %d ",b);
return 0;執行結果是18,
理解:1. ++在前的意思是「先加後用」,這裡蘊含的意思是說,只要遇到++在前那麼馬上將記憶體中的變數加一,++在後的意思是」先用後加「這個「後加」的意思是語句結束(分號為語句結束)後才加,沒結束 是記憶體中還是儲存原來的值.
2.還有加號是二元操作符,兩個運算元算做乙個運算,且是從左到右結合的(等號是從右至左)。
於是:
int b;
b=(c++)
+ (++c)
+ (c++) ;// 5 + 5 + 5 。第乙個是5是因為第二個運算元執行後,記憶體中的c已經變為5了.
答案便是15了
關於C語言操作符結合性的學習總結(收穫很多)
右結合性,就是在表示式中最右邊的操作最先執行,然後從右到左依次執行。左結合性的操作符 如位操作符 和 則是從左至右依次執行。在標準c語言的文件裡,對操作符的結合性並沒有做出非常清楚的解釋。乙個滿分的回答是 它是仲裁者,在幾個操作符具有相同的優先順序時決定先執行哪乙個。每個操作符擁有某一級別的優先順序...
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...