1樓:匿名使用者
x=0y=1
z=1原因是:
--x && (--y || --z) 中,&& 是邏輯與運算子。
程式執行時會先判斷 && 左邊的部分,如果內左邊部分為真,再判斷右容邊部分。
左邊的部分是 --x ,也就是讓 x 先自減 1,即 x 為 0 ,邏輯運算時 0 被當作 "假" 來處理。
邏輯與運算時有一項為假,結果必為假,因而不用再判斷右邊的部分。
所以 && 右邊的部分不會被執行,所以 y 和 z 的值會保持不變。
c語言:已有定義int x=3,y=4,z=5;則表示式 !(x+y)+z-1&&y+z/2的值是?
2樓:
答案是1。
涉及到的運算子: ! () + - && /運算子優先順序為:() ! / + - &&運算過程:
x=3,y=4,z=5
!(x+y)+z-1&&y+z/2
!(3+4)+5-1&&4+5/2
所以表示式計算步驟為
!(3+4)+5-1&&4+5/2 -> !7+5-1&&4+5/2!7為 0
-> 0+5-1&&4+5/2
5/2 整數除整數得整數 2
-> 0+5-1&&4+2
-> 4&&6
邏輯運算 &&
擴充套件資料c語言運算子的優先順序:
如果同一優先順序的運算子,結合次序由結合方向所決定。
3樓:匿名使用者
只是等於1的,我是經過turbo c2.0編譯過的,答案應該沒什麼問題的,程式是:
main()
答案為什麼會等於1呢?那是因為運算級別的問題,根據運算級別,實現算括號裡面的先,所以程式就變成!7+z-1&&y+z/2;
然後就算!運算,由於7是大於1的,也就是真,所以!真就是假,也就是0,所以函式就變成0+z-1&&y+z/2;
然後再算除號的,由於你這裡兩個都是整形的,所以小數點後面的數忽略,所以就變成0+z-1&&y+2;
接著計算加減運算,也就是變成4&&6;
因為4和6都是大於1的數,所以就是真,由於&&兩邊都是真的話,輸出的就是真,所以結果就是1。
要是還有什麼不明白的話,就mm我吧!嘻嘻~~~~~~
4樓:匿名使用者
1優先順序: 算數》條件》關係》賦值
關係中的優先順序: 非》與》或
5樓:匿名使用者
1,把運算子優先順序搞清楚就好了
6樓:匿名使用者
x等於y加4。四家外加1+3+5+4+1等於三五+4+5+1。
7樓:匿名使用者
!(3+4)+5-1&&4+5/2
=!7+4&&4+2
=!11&&6
所以說那個式子的值是:不是11並且是6
C語言int x 3,y 4,z 5那xyz 1 是什麼意思
答案是1。涉及到的復運算制符 運算子優先順序為 bai du 運算過程 x 3,y 4,z 5 x y z 1 y z 2 3 4 5 1 4 5 2 所以表達zhi式計dao算步驟為 3 4 5 1 4 5 2 7 5 1 4 5 2 7為 0 0 5 1 4 5 2 5 2 整數除整數得整數 2...
C語言add x 1,y 1 ,C語言 add x 1,y
不太清楚你的意思是問這段 是什麼意思 還是 define add x,y x y 如果是後者,define的本質其實是乙個代換即編譯後add x,y 將被替換為 x y對這段 來說 add x 1,y 2 即為 x 1 y 2 x,y都被初始化為 2 所以s的值為8 2 1 2 2 1 巨集定義是直...
c語言。。int a 5,b 3,w 1,x 2,y 3,z 4a wxb yz 最後b的值為什麼是三
因為w 1 x 2這個條件不成立,所以整個邏輯語句就是不成立,程式不會再去執行 後面的 b y z這個語句,所以判斷後b的值不變還是3 主要看最抄後的乙個表示式 求值 襲a w x b y z 這個表示式的值是多少呢?顯然不是true就是false,因為這是個邏輯表示式 先看 前面的表示式,求值是f...