※ 引述《Lordaeron (Terry)》之銘言:
: ※ 引述《Lordaeron (Terry)》之銘言:
: : 不就說了他拿不到POINT 了嗎?
: : 就是說他寫未定義, 但學校認為是26
: 不過. intel base 的
: VC6/7, g++, watcom c++, TC++ 3 全都是27, 不知有誰找一套
: 出來可以算出別的答案的?
: 可能要找天去開台SOLARIS 和AIX 再來看看.
我剛使用IBM iSeries 的機器計算。
算出來的結果為26。
x= 12; x = x++ + ++x; cout<<x;
我本來以為程式可以很簡單的拆成下列幾行來看:
+ 的 associativty is left to right:
so
temp1= x++; //temp1 = 12, x = 13.
temp2 = ++x; // temp2 = 14, x=14.
x = temp1 + temp2; // x = 12 + 14 = 26.
但以上結果只有在iSeries上正確。在pc上用VS.net 2003 & dev c++運算結果都是27。
先x++, 而cout<<x 在pc上結果為13,但在iSeries為12。
而用linux 的anjuta 運算結果還是27啊.
so intel's x86 should be this:(使用 vs.net 2003 debug的結果)
x=x+1; // ++x 在pc上有優先權。 x=13。
x=x+x; // x=26。
x=x+1; // x++ 在pc上優先權最末。x =27。
anyquestion???
I DON'T know how to type chinese character in SUSE linux....so........
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.166.216.188
※ 編輯: ImOnLine 來自: 218.166.214.95 (02/24 13:53)