1樓:匿名使用者
結果是來6
z+=x>y?++x:++y的意思是
z=z+x>y?++x;++y
因為x>y為假, 所以x>y?++x;++y這個運自算出來是bai++y, 那麼式子就成了
z=z+++y 而++運算子是du先自增然後才執行zhi下一條語句dao, 那麼y就先辦成3,然後才會和z相加的
這樣就計算出來了z=3+3
2樓:匿名使用者
給你改編一下應該好理解int ntemp;if (x>y) ntemp = ++x;(先加1再賦值)else ntemp = ++y; z = z + ntemp;
3樓:匿名使用者
z的值是6,你要的是結果?
4樓:匿名使用者
寫的不是很清楚看起來應該是三目運算 前面是z+=x>y? 後面是++x:++y;如果z+x>y 則取++x;否則取後者 取後者 加1後 x=2;
c語言:已有定義int x=3,y=4,z=5;則表示式 !(x+y)+z-1&&y+z/2的值是?
5樓:
答案是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語言運算子的優先順序:
如果同一優先順序的運算子,結合次序由結合方向所決定。
6樓:匿名使用者
只是等於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我吧!嘻嘻~~~~~~
7樓:匿名使用者
1優先順序: 算數》條件》關係》賦值
關係中的優先順序: 非》與》或
8樓:匿名使用者
1,把運算子優先順序搞清楚就好了
9樓:匿名使用者
x等於y加4。四家外加1+3+5+4+1等於三五+4+5+1。
10樓:匿名使用者
!(3+4)+5-1&&4+5/2
=!7+4&&4+2
=!11&&6
所以說那個式子的值是:不是11並且是6
、定義:int x=1,y=2,z ;執行 z=x>y? x++: y++; 表示式後,x,y,z的值是
11樓:歷玉巧淦賦
||先明白x++||y++||z++這個表示式結果只有可能2個值,0和1,||運算子有個特
回點,如果第一個表答達式結果是真,則後面的表示式將不執行,因為x=5,結果非零,所以這裡只執行了一個x++,最後x=6,y=6,z=8
12樓:匿名使用者
? :為三元運算子,例如:a?b:c
表示如果a為真,則表示式值為b,如果a為假,則表示式值為c
先算x>y 為false其值為y++,即為3,所以最後x=2,y=3,z=3
13樓:匿名使用者
相當於:
if ( x>y )
else
所以執行完成後:x=1 y=3 z=2
若有條件表示式 exp ab則以下表示式中能完
原因如下 exp 是一個變數。這個條件表示式的意思是,如果 exp 為真,則執行 a 否則執行b 而只要變數exp的值不為0 也就是false exp 都為真 true 比如exp 2或者exp 1,exp 都為真。所以 exp 等價於 exp!0 也就是使用 exp!0 a b 程式也能達到同樣的...
寫出經過計算後表示式中a的值。要解釋計算過程
a a a 等價於 a a a 4 4 8再執行a a 9 b a a 等價於 a a a 5 5 10 c a a 等價於 a a a 5 5 10再執行a a 11 a.a a 先取a的值4,然後a 1 5,相加後 9 b,a先 1 5,然後5 5 10 c,後面的a先取值4,然後加1得到5,此...
for語句省略了表示式,那麼n是什麼意思,該怎麼迴圈
for迴圈,有兩個分bai號,分成三部分,第一du部分只執行一zhi 次,第二部分判斷條件dao 真假 0為假,別的數為專真 如果為真,則執行屬迴圈體,迴圈體執行完了,在執行第三部分,然後在執行第二部分判斷真假,如果為真,重複上面的.n就是把n的值減1,減了之後為0的話,就退出迴圈了 為什麼for迴...