從一道面試看自增運算

#include <stdio.h> 

#include <stdlib.h> 

#define  adds(a) a*a

 

 

int main(void) 

int i=3,j;

j = adds(i++);

printf("%d/n",j);

j = adds(++i);

printf("%d/n",j);

getchar(); 

return 0;    

}

輸出爲 9 49
c語言對於這種運行的處理不是把i++或++i一個一個分開算的。
編譯器在遇到i++時 直接將i入棧 之後再增加1
遇到++i時直接將i增加1再入棧
所以adds(i++)是先計算完adds之後再增加i的值的
adds(++i)是先增加i的值 之後再運算的!
當然編譯器不通 結果可能會很不一樣 這是一種很不規範的寫作習慣 只是在面試中需要注意
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章