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...