1樓:匿名使用者
首先看a=b=c=0;」=」是賦值運算,它的運算順序是右結合,即從右向左計算,那麼a=b=c=0;它的運算順序用括號表示出來就是:(a=(b=(c=0))),再注意到賦值運算完成後整個賦值表示式的值就是賦值後左邊變數的值,例如;
(c=0)==0;這樣的話a=b=c=0就不難理解了,最後a==0,b==0,c==0;
再看到++a||++b&&++c;這裡有自增運算子"++",算術運算子"+",以及且運算子」&&」,或運算」||」,我們注意到四者的計算優先順序是遞減的.所以用括號表示他們計算順序為:(++a)||((++b)&&(++c)),再注意到自增運算的含義是,象++a的形式,整個表示式的值就是a加一以後的值,另外該表示式還有個***,就是a=a+1所起的作用,即a會自增1.象a++的形式也有上面說的一樣的***,只是整個表示式的值是a原先的值.例如:a==0,則經過++a後,a==1,(++a)==1;經過a++後,a==1,(a++)==0;
(++a)||((++b)&&(++))一看是這樣子,其實不然,要考慮到||運算的短路效應,很容易理解到當||兩邊的表示式乙個為真時,則整個表示式為真,所以當(++a)==1時,||右邊的((++b)&&(++c))就沒被計算了,因為它是真是假都不會影響(++a)||((++b)&&(++))的值,因為++a已經等於1了.
所以最後可知,a==1,因為++b和++c沒被計算,所以b==0,c==0.
列印的結果為:a=1 b=0 c=0
2樓:匿名使用者
短路求值 現象
3樓:
++a||++b&&++c;
原因是++a的值為1,可知道整個表示式的值已經是1了,那麼後面的運算不進行
所以a=1 b=0 c=0
4樓:匿名使用者
這是有關一道 運算子 優先順序的題,
自增++a的優先順序 高於|| ,
或 運算子, 結果是a=1 b=0 c=0
c語言學習書籍,C語言學習書籍推薦
叔梅胥俏 可以看 c陷阱與缺陷 絕對推薦,這本書是強化你的c語言的好書。上面有很多我們在c上常犯得錯誤,是c大師安德魯編的。c與指標 也可以看看,畢竟指標是c的精華與靈魂,說實話,c功力怎麼樣,關鍵是看指標用得好不好。最後如果你想很牛的話就看 c語言專家程式設計 你吃透後就可以說你精通c語言了 我不...
c語言程式,幫忙詳細分析一下,C語言程式,幫忙詳細分析一下!
天堂妹兒 選b,等於10。首先是t 3 f t,3 也就是4 f t,3 然後是4 t 2 f t,2 算出來是7 f t,2 然後是7 t 1 f t,1 算出來是9 f t,1 然後是9 t 0 f t,0 算出來是10 f t,0 由於此時n 0,所以返回,結果為10。 草野閒羊 選b,等於1...
沒有學習c語言,學c 語言可以嗎???
可以直接學啊c 是c語言的乙個公升級,兩個語法上區別都不大,直接學c 就是了。兩個沒有什麼依賴,不是必須會c才能學c 可以 其實你學會了c 也就學會了c c 用的是c的語法。只是多了個物件導向 可以,不過就是吃力一點!不用去學c,直接學c 這是學軟體人員給你的建議。一樓的是不是沒不過c 現在大部分高...