1、C++函數(shù)參數(shù)入棧順序--從右到左
下面的例子用來驗(yàn)證C++函數(shù)參數(shù)入棧順序:
void test(int i1, int i2, int i3)
{
printf(“i1=%d, i2=%d, i3=%d\n“,i1,i2,i3);
}
int i=0;
test(++i,++i,++i);
則輸出結(jié)果為:i1=3, i2=2, i3=1
2、一個(gè)有趣的小問題--表達(dá)式與算符結(jié)合順序
在VC論壇里看到有人對(duì)下面的表達(dá)式計(jì)算結(jié)果有點(diǎn)迷惑,
int i = 1;
int k = (++i) + (++i)+ (++i);
int i2 = 1;
int k2 = (++i2) + (++i2);
我也測試了一下,很多人一開始會(huì)以為 k = 2 + 3 + 4 =9;
但是事實(shí)上在VC, DevC++4.9(GCC)里面編譯, 執(zhí)行結(jié)果k=10;
綜合其他人的一些看法和我自己的測試,得出結(jié)論:
k= (++i)+(++i)+(++i);//等價(jià)于++i,++i,k = i+i + (++i);也就是 k = 3 + 3 + 4 = 10。
因此,k2的結(jié)果為6。
當(dāng)然,這個(gè)沒有進(jìn)行語法上的深層次分析,有興趣的朋友可以自己分析一下C++的相關(guān)語法。
(本文是本人以baodi_z的網(wǎng)名原發(fā)表于CSDN的個(gè)人BLOG,原文發(fā)表于 2004年12月06日 11:23 AM )