綠柚子
14 years ago
int a=5, b=0, c=6;a=(a = b )&&(c = b );那a,b,c最後的值是多少!?
latest #52
烏龜烏龜夜
14 years ago
= B-) B-) B-)
烏龜烏龜夜
14 years ago
a=1; b=0; c=0;
Gelion
14 years ago
同上 1,0,0
立即下載
河馬泉
14 years ago
為什麼 0 && 0 會等於1?
烏龜烏龜夜
14 years ago
assign的結果是1
河馬泉
14 years ago
好吧~其實以前看書上寫的 && 和 || 這兩個運算子~就不太了解意思了
河馬泉
14 years ago
搞不清楚和 & |的差異
Gelion
14 years ago
and or的觀念可以看真值表 en.wikipedia.org/wiki/Tr...
Gelion
14 years ago
驚 我用Mac跟sparc工作站跑出來的結果都是0 0 6
Gelion
14 years ago
想不出那個環節可以讓c=6....
烏龜烏龜夜
14 years ago
Gelion: XD 我來試試VC好了
烏龜烏龜夜
14 years ago
VC也是0 0 6 XD
Gelion
14 years ago
why!!
Gelion
14 years ago
按照operator precedence來說 這三者 () priority 最高 即使=最低 可是因為在()內 也會優先執行才是 而&&的順序是LtoR 應該會是 1. (a=B-) 2. (c=B-) 3. (a=B-)&&(c=B-) 4.才是a=... 不懂....
Gelion
14 years ago
棍 一堆墨鏡人是怎樣....
烏龜烏龜夜
14 years ago
B-) B-) B-) XDD
河馬泉
14 years ago
用DEV C 跑出來也是 0 0 6
大耀耀
14 years ago
B-)B-)B-)B-)B-)B-)B-)B-)B-)B-)B-)B-)
河馬泉
14 years ago
謎之聲:這就是大自然神秘的力量啊
烏龜烏龜夜
14 years ago
Gelion: &&是L2R沒問題,可是assign完結果是0的樣子
大耀耀
14 years ago
你們把assign的值改用function, 然後逐步debug, 會發現他只會做第一個assign op (a = b ), 至於為什麼我也不知道, 也許是 compiler 的 bug?
綠柚子
14 years ago
我 的答案也006
綠柚子
14 years ago
所以才想說是不是答案是錯的,就想問問大家
大耀耀
14 years ago
a = ( a = f(b ) ) && ( c = f(b ) ) && ( b = f(a ) ); 只會跑進一次f(x), 後面完全沒跑過
烏龜烏龜夜
14 years ago
pychang: 推實驗精神XD
大耀耀
14 years ago
kuoweili: 這樣才會知道問題點在哪阿 XDDD
Gelion
14 years ago
but.... why??
大耀耀
14 years ago
我剛剛看了一下optimize後的asm code大概了解了,它對AND有做最佳化,由左至右只要遇到false後面就不做直接jump,回傳false
大耀耀
14 years ago
int a=5, b=0, c=6, d=9; a = ( a = 3 ) && ( c = b ) && ( b = d ); 結果 0 0 0 9 得證~
綠柚子
14 years ago
烏龜烏龜夜
14 years ago
pychang: 所以是compiler最佳化動的手腳XD
謙2011
14 years ago
原來是最佳化搞的鬼
大耀耀
14 years ago
只能說柚子的寫法太特別了 最佳化的人沒想到有人會這樣寫 XDDD
河馬泉
14 years ago
好深奧~
Gelion
14 years ago
這樣說來 如果沒有最佳化 答案應該是0 0 0 我上面寫 1 0 0 是錯的
大耀耀
14 years ago
恩 沒最佳化的答案是0 0 0
大耀耀
14 years ago
算問題滿tricky的, 反正我值夜班也很無聊就順便研究看看它產生的asm code XDDD
謙2011
14 years ago
我有想過要看asm code可是不知道怎麼弄
謙2011
14 years ago
值班電腦裡面有裝IDE? 驚
河馬泉
14 years ago
asm code是啥?
烏龜烏龜夜
14 years ago
trustn01: gcc就可以看了
烏龜烏龜夜
14 years ago
Senct: 組合語言
大耀耀
14 years ago
VC很方便,先跑到一個斷點,右鍵->移至反組譯碼, 就看到了 每個指令還可以再設中斷
大耀耀
14 years ago
Senct: 組合語言 assembly code
大耀耀
14 years ago
trustn01: 越接近核心的人事物越黑; 我都出現在這了, 還有什麼事比這還驚訝的 XD
河馬泉
14 years ago
組合語言!!!
烏龜烏龜夜
14 years ago
pychang: XDDD
謙2011
14 years ago
pychang: 還有這一招 受教了
河馬泉
14 years ago
(worship)
Gelion
14 years ago
我猜這不是柚子的程式碼 應該是某個地方轉來的題目...這種coding的思維太特別了....
綠柚子
14 years ago
Gelion: 沒錯XD
B_Wing
14 years ago
這是大家來找碴 資工版 XD
back to top