C語言xyz1yz2跪求高手解答不勝感激。謝謝

2021-03-06 14:23:57 字數 5862 閱讀 6951

1樓:我是果瘋

算數運算子優先於邏輯運算子。

先算(x+y),再算(x+y)-z,再算(x+y)-z-1。

若(x+y)-z-1的結果為非零數,則!(x+y)-z-1的值為0。

(x+y)-z-1的值為0,則!(x+y)-z-1的值為1。

先算z/2,再算y+z/2。

若y+z/2的值為0,那麼整個表示式的值為0。

若左邊(x+y)-z-1的結果為1 ,y+z/2的結果非零值,那麼整個表示式的結果為1。

其他情況,&&左右兩邊出現一個零,則整個表示式的結果為0。

2樓:匿名使用者

這個語句大部分是用在if()裡面當作條件表示式的,因為c語言沒有真正意義的bool型別,而是定義了 0 為 false, 非 0 為true,所以條件表示式可以是算術表示式

先計算 (x+y) 再取 非 (這裡注意,任何非零的值取非,結果是0, 但是 0 取非,值為1,這是c語言定義的), 值再 +z -1 , 結果如果為零,則不 執行 && 後面的 y+z/2, 因為 0&&任意值 都是 0 即為 false,只有在 && 前面為 true的時候才會去執行 && 後面的語句

這裡考查的是 運算子的優先順序,以及 && 的細節,如果是考試中的話可能會出現 x++ && x++ 或者 x++ || x++ 然後問x的值 之類問題

3樓:匿名使用者

參考人家的,這種題知道運算優先順序就萬事ok了

1級優先順序 左結合

() 圓括號

下標運算子

-> 指向結構體成員運算子

. 結構體成員運算子

2級優先順序 右結合

! 邏輯非運算子

~ 按位取反運算子

++ 字首增量運算子

-- 字首增量運算子

+ 正號運算子

- 負號運算子

(型別) 型別轉換運算子

* 指標運算子

& 地址與運算子

sizeof 長度運算子

3級優先順序 左結合

* 乘法運算子

/ 除法運算子

% 取餘運算子

4級優先順序 左結合

+ 加法運算子

- 減法運算子

5級優先順序 左結合

<< 左移運算子

>> 右移運算子

6級優先順序 左結合

<、<=、>、>= 關係運算子

7級優先順序 左結合

== 等於運算子

!= 不等於運算子

8級優先順序 左結合

& 按位與運算子

9級優先順序 左結合

^ 按位異或運算子

10級優先順序 左結合

| 按位或運算子

11級優先順序 左結合

&& 邏輯與運算子

12級優先順序 左結合

|| 邏輯或運算子

13級優先順序 右結合

? : 條件運算子

14級優先順序 右結合

= += -= *= /= %= &= ^= |= <<= >>= 全為賦值運算子

15級優先順序 左結合

, 逗號運算子

優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。

所有的優先順序中,只有三個優先順序是從右至左結合的,它們是單目運算子、條件運算子、賦值運算子。其它的都是從左至右結合。

具有最高優先順序的其實並不算是真正的運算子,它們算是一類特殊的操作。()是與函式相關,與陣列相關,而->及.是取結構成員。

其次是單目運算子,所有的單目運算子具有相同的優先順序,因此在我認為的 真正的運算子中它們具有最高的優先順序,又由於它們都是從右至左結合的,因此*p++與*(p++)等效是毫無疑問的。

另外在c語言裡 沒有前置後置之分 因為++ -- 是右結合所以 右側優先運算 表現為 "後置優先順序比較高" 的假象 前置和後置的區分是因為運算子過載而後加入c++的

接下來是算術運算子,*、/、%的優先順序當然比+、-高了。

移位運算子緊隨其後。

其次的關係運算子中,< <= > >=要比 == !=高一個級別,不大好理解。

所有的邏輯操作符都具有不同的優先順序(單目運算子出外,!和~)

邏輯位操作符的"與"比"或"高,而"異或"則在它們之間。

跟在其後的&&比||高。

接下來的是條件運算子,賦值運算子及逗號運算子。

在c語言中,只有4個運算子規定了運算方向,它們是&&、| |、條件運算子及賦值運算子。

&&、| |都是先計算左邊表示式的值,當左邊表示式的值能確定整個表示式的值時,就不再計算右邊表示式的值。如 a = 0 && b; &&運算子的左邊位0,則右邊表示式b就不再判斷。

在條件運算子中。如a?b:c;先判斷a的值,再根據a的值對b或c之中的一個進行求值。

賦值表示式則規定先對右邊的表示式求值,因此使 a = b = c = 6;成為可能。

4樓:匿名使用者

x,y,z,的數值是多少啊。

5樓:匿名使用者

!(((x + y )+ z - 1)&& (y + (z / 2)))

定義:int x=3,y=4,z=5;則表示式!(x+y)+z-1&&y+z/2的值是

6樓:子夜清風

1首先!優先順序最高,故!(x+y)=0,

然後根據算術運算子的優先順序高於&&,繼續計算0+z-1=4,和y+z/2=6,(z/2為取整運算)最後進行「與」運算,4&&6=1.

7樓:匿名使用者

這裡涉及bai

到的運算子: ! () + - && /

優先順序

!(x+y)+z-1&&y+z/2

!(3+4)+5-1&&4+5/2

所以表示式計算步驟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

-> 0+5-1&&4+2

-> 4&&6

邏輯運算 &&

所以是答1

c++ 運算子優先順序列表 (很詳細的

8樓:匿名使用者

1 !(x+y)+z-1

先計算x+y,再!(x+y),然後結果)+z-1,結果是0+5-1=4

所以要計算&&之後的表示式

y+z/2 = 6

4&&6 =1

附:版c語言的操作符共有15個優先權級,如下:

operators associativity

() -> . left to right

! ~ ++ -- + - * (type) sizeof right to left

* / % left to right

+ - left to right

<< >> left to right

< <= > >= left to right

== != left to right

& left to right

^ left to right

| left to right

&& left to right

|| left to right

?: right to left

= += -= *= /= %= &= ^= |= <<= >>= right to left

, left to right

優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。

9樓:

先x+y

再求非然後z/2

然後計算&&兩邊的表示式

最後執行&&運算

10樓:匿名使用者

!(x+y)=!(3+4)=!7=0 這是「非」表示式1&&y=1&&4=1 這是「且」表示式

z/2=2 這是求商式(z%2是求餘式)

可得 !(x+y)+z-1&&y+z/2=0-1+2=1

11樓:匿名使用者

c語言的優先du級(從上到下依次遞減zhi):

醋-dao初等,4個: ( ) [ ] -> 指向結構體

回成員 . 結構體成員

壇-單目,9個:答 ! ~ ++ -- -負號 (型別) *指標 &取地址 sizeof長度

酸-算術,5個: * / % + -減

味-位移,2個: << >>

灌-關係,6個: < <= > >= == 等於 != 不等於

味-位邏,3個: & 按位與 ^ 按位異或 | 按位或

落-邏輯,2個: && 邏輯與 || 邏輯或

跳-條件,1個,三目: ? :

福-賦值,11個: = += -= *= /= %= >>= <<= &= ^= |=

豆-逗號,1個: ,

你可以發現算術運算子高於邏輯運算子,而非!高於算術運算子。

所以該表示式可以等於((!(x+y))+z-1)&&(y+z/2)

現在就一目瞭然了。

x+y=7,那麼!7=0(邏輯運算都是規定0為假,除了0外都為真。那麼(!真)=假=0)

所以&&左邊的=0+z-1=0+5-1=4

&&右邊的=4+5/2=6.5 因為是int型,所以取整它等於6

!(x+y)+z-1&&y+z/2它等於4&&6,由於4和6都是真所以4&&6等於1

該表示式的值為1

12樓:匿名使用者

13樓:超級賽亞小熊人

1,要考慮優先順序的問題

14樓:汝閒初喜悅

只是等於1的,我

bai是經過turbo

c2.0編譯過的du,答案應該沒zhi

什麼問題的,程dao序內是:

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我吧!嘻嘻~~~~~~

已有定義:int x=3,y=4,z=5 則表示式!(x+y)+z-1&&y+z/2的值是,這個怎樣求,想要具體的求解過程。

15樓:匿名使用者

!(x+y)+z-1&&y+z/2

=!(3+4)+5-1&&4+5/2

=!7+5-1&&4+5/2

=0+4&&4+5/2

=4&&6

=1運算子的優先順序:

()最高,下來是!下來是+,-,*,/,最後是&&邏輯與在左邊右邊只要有一個版0的時候結果就為04和權6都不為0,所以結果為1

16樓:匿名使用者

17樓:匿名使用者

結果為1

在C語言中mainint a 1,b 2,c 3 printfd,d,d,d n ,a b c,a b c,ab c ,ab c執行結

a b c 將c的值3賦給b,再將b c的值3賦給a,整個表示式的值是3 a b c vc2005測試結果是3,我自己算應該是1,這個我不是很清楚。a b c 先判斷b c,結果是1,再判斷a 1,結果是0 a b c 先判斷b c,結果是1,再判斷a 1,結果是0 a b c,a b c,a b ...

c語言中a1,b2,c43的值為多少

逗號表示式的返回值是最後一個值 因此是43 逗號表示式的一般形式是 表示式1,表示式2,表示式n。其求解過程是 先計算表示式1,最後計算表示式n,最後整個逗號表示式的值為表示式n的值。因此,a 1,b 2,c 43 的值為43.在c語言中 int a 1,b 2,c 3 表示式 a b a b 的值...

1C語言和C 有什麼區別2VC是用什麼語言程式設計的

c語言 是 一種高階程式語言,出現得比 basic,fortran等語言晚,所以語法規則與那些語言有相似之處。c 在 c語言 基礎上 加入 了 class 等東西,是 c 的擴充套件。vc 是編譯器的名字,能編譯 c c 語言寫成的程式。它是微軟造的,服務目標是視窗系統,編寫視窗api程式。支援 a...