程式語言 - 考試

Table of Contents


原本說法自D

C_and_C++置底13誡之8有寫到那是未定義的行為

昨晚跑的時候是12

今天開機跑一樣的程式 居然變11

WTF


※ 引述《controlfeng (controlfeg)》之銘言:
: void main()
: {
: int x=12;
: int*y;
: y=&x;
: funl(y);
: printf(x);
: }
: void funl(int *n)
: {*n=(*n)+++--*n-*n;}
: ----------------------------------------------------------------------------
: 上述的是這樣嗎??*n=(*n)+++--*n-*n={(*n)++}+{--*n}-{*n}=13+11-12=12
: printf(x)=??

--

All Comments

Suhail Hany avatarSuhail Hany2014-01-03
不可思議!! 編譯後的機器碼居然runtime會變動 XD
Susan avatarSusan2014-01-04
*n=((11+11)-11)+1 ∴*n=12