#include
#include
#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的值 之後再運算的!
當然編譯器不通 結果可能會很不一樣 這是一種很不規範的寫作習慣 只是在面試中需要注意
從一道php面試題說起
面試題目 setcookie name test echo cookies name 請說出程式結果 能說出第一次與第二次的區別者加分 本來一開始我認為不就是設定乙個cookie,然後讀出來的問題,但是被那個後面的提示搞迷惑了從來沒有想過這樣的問題。面試的時候也沒有想出答案,後來在面試官的指點下搞清...
從一道面試題開始說fork
自 http blog.csdn.net yuwenliang archive 2010 01 18 5209239.aspx 給出如下c程式,在linux下使用gcc編譯 1 include stdio.h 2 include sys types.h 3 include unistd.h 4 5 ...
Java面試 從一道題來理解重寫 過載
前言 比較基礎的概念,只是做一道題突然對這一塊的知識記得不是很牢固,一起複習一下。overriding 重寫,覆蓋 覆蓋父類的方法 overloading 過載,以類以統一的方式去處理不同型別資料的一種手段,是多型的一種表現。來看一題 選哪個不會出錯?會做的話就直接跳過這一篇吧 題源 牛客網 cla...