1樓:匿名使用者
k= ((x++)>=0)&&(!(y--<=0))||(z=x+y)
就是這個順序
x++是先使用x的值,再++,之後,x的值變為0.
所以x++>=0這個表示式的值為false對於邏輯與運算,如果第乙個表示式為false,則第二個表示式將不驗證所以!(y--<=0)沒有執行,y的值仍然為5對於或運算,若第乙個表示式的值為false,則還要驗證第二個表示式於是z=x+y執行了,表示式的值為5,被強制轉換為bool型別,則表示式的值為true
最後得出整個k=後面的表示式的值為true,所以k=1;
2樓:都叫我黃工
1.(y--)<=0
2.z=x+y
3.x++>=0
4.!(y--<=0)
5.x++>=0&&!(y--<=0)
6.x++>=0&&!(y--<=0)||(z=x+y)
3樓:匿名使用者
先!接著依次是&&、||
4樓:匿名使用者
x++ 得 0
x++>=0 得 1
y-- 得 4
!(y--<=0) 得 1
z=x+y 得 4
1&&1||4
我記得好像是這樣的!~算沒算錯就不知道了!~錯了請原諒!
c語言邏輯運算子順序
5樓:匿名使用者
邏輯運算子有三種,分別為&&(與運算)||(或運算)!(非運算),三者的優先順序順序為!>&&>||。
ps.1、與運算子(&&)和或運算子(||)均為雙目運算子。具有左結合性。非運算子(!)為單目運算子,具有右結合性。
2、「&&」和「||」優先順序低於關係運算子,「!」優先順序高於算術運算子。
6樓:
a=b=c=1
++a++b
++c++b&&++c
++a||(++b&&++c)
7樓:匿名使用者
ls,貌似&&的優先順序比||大 = 賦值語句結合性 自右相左
a=b=c=1;等價於 c = 1;b = c; a = b;
-------------------------
看了sunnyapi的回答我感覺有必要
對以上回答進行一點補充
首先宣告 ||和&&運算子均屬於短路運算子;
什麼是短路運算子舉個簡單例子
若 a = 1; a||a++;執行後結果是什麼,變數a值為多少?
||邏輯或對第一項a進行判斷是否為0,若不為零則返回值為1;且不在進行後面的a++運算,這就是短路運算子的特性,這樣一來,a的值還是1沒有改變,同理 a =0; 0&&a++;的執行結果為a=0;
舉個形象點的例子:
a=1 a就是真
b=0 b就是假
a||a-- 真||a++,既然已經有真的了就沒必要再判斷a--是否為真 1||a++;肯定是真的;
同理 b&&b++ ,假&&b--既然已經有假的了就沒有必要判斷b++真假,同時b++也就不會被執行
++a||++b&&++c;這個語句根據算數運算子的優先順序關係 &&的優先順序比||大 『可以這樣理解』
所以先執行對++a||++b 和 ++c進行邏輯與(&&)運算,並先判斷++a||++b是否為假若假則不進行++c;在判斷 ++a||++b 是否為真的過程中,進行了++a和++b的||(邏輯或)運算,在邏輯或運算中先判斷++a是否為零,這個過程中相當於 先a=a+1;再if (a!=0) 因為前面a=1,再執行++a,a這時等於2所以在if (a!=0) 成立則,不會執行++b;
所以執行結果為a =2 ,b=c=1;
再程式執行++a||++b&&++c;這條語句的過程中只有a變數的值發生改變,而不是樓下說的那樣
「在執行「++a||++b&&++c;」語句之前完成自加運算」 這是錯的·
上述方法只是為了幫助你理解這個++a||++b&&++c;語句的意思
若我寫個a=b=c=1; ++a||++b&&++c||++a||++b&&++c||++a||++b&&++c;你說該怎麼理解?
挨個分析優先順序,?
那不得瘋了
所以那樣也沒必要++a||++b&&++c||++a||++b&&++c||++a||++b&&++c;只要由左到右依次執行這樣來判斷就好了就是(++a )語句1|| (++b&&++c||++a||++b&&++c||++a||++b&&++c)語句2
(++a)==2!=0所以嘛,語句2就不執行了 這樣判斷也符合 該語句的執行順序
8樓:匿名使用者
a=b=c=1; ++a||++b&&++c; 問語句執行順序?
解答:樓上 a19715指出了「賦值語句結合性 自右向左」是正確的,所以a=b=c=1;的執行順序是:
c=1;
b=1;
a=1;
樓上 翰海蒼狼 指出的 ++a||++b&&++c;語句的執行順序也是對的,我多囉嗦解釋一下啊。
首先,++出現在a之前,表示在執行「++a||++b&&++c;」語句之前完成自加運算,所以要先執行自加。同理,b和c也是先完成自加運算。這部分解釋可以表述為:
++a;//即執行a=a+1;
++b;//即執行b=b+1;
++c;//即執行c=c+1;
接下來,引用 a19715的一句話「&&的優先順序比||高」,不是貌似,的確是的哦,所以
b&&c被執行。注意,此時的b和c已經完成了自加運算。
a||(b&&c)最後被執行。
完畢。樓主明白啦不?@_@
9樓:通訊小王子
先++,再||跟&&
c語言問題 c語言邏輯運算中三個運算子!,&&,|| 哪個最優先?然後怎麼個優先順序
10樓:sydney在路上
!邏輯反,&&邏輯與,||邏輯或,
優先順序:1.! 2&& 3||
望採納~
11樓:夢回__昨天
!>&&>||,應該是這樣
c語言提供3種邏輯運算子,按優先順序高低它們分別是
12樓:文化廚子
c語言中的三種邏輯運算子為:邏輯非(!),邏輯與(&&)、邏輯或(||)。
按優先順序從高到低排列:!、&&、||,!的優先順序最高,&&的優先順序居中,||的優先順序最低。
13樓:匿名使用者
您好,sa團隊給出的答案優先次序:!(非)→&&(與)→||(或)
14樓:匿名使用者
邏輯運算子的優先順序是相同的,且只有兩個。這兩個邏輯運算子是 : &&、||
c語言裡面的運算子優先順序如何?
15樓:匿名使用者
c語言中,運算子的運算優先順序共分為15 級。1 級最高,15 級最低。 在表示式中,優先順序較高的先於優先順序較低的進行運算。
而在乙個運算量兩側的運算子 優先順序相同時,則按運算子的結合性所規定的結合方向處理。
各等級運算子如下:
(以下說明中,對傳統的1級和2級做了細化,1和2對應傳統1級,3和4對應傳統2級,所以細化說明共有17級。)
1、基本表示式 1級
基本表示式(primary expressions),主要是用於運算子之間,做為運算數。
標識,常量,字串文字量,優先順序提公升表示式最優先執行。
優先順序提公升表示式是指圓括號包圍的表示式,如「( expression )」
2、字尾表示式 2級
postfix-expression [ expression ],陣列下標運算。
postfix-expression ( argument-expression-list),函式呼叫,括號內的引數可選。
postfix-expression . identifier,成員訪問,
postfix-expression -> identifier,成員訪問,->號之前應為指標。
postfix-expression ++,字尾自增
postfix-expression --,字尾自減
( type-name )
( type-name ) 復合初始化,c99後新增。
3、單目/一元運算 3級
++ unary-expression 字首自增
-- unary-expression 字首自減
unary-operator cast-expression 單目轉型表式式, 包括 取位址& ,提領 * , 正號+ ,負號- 位反~ 邏輯否!。
sizeof unary-expression 求型別長度,對表示式求型別長度
sizeof ( type-name ) 求型別長度
4、強制型別表示式 4級
( type-name ) cast-expression,強制表示式成為type-name指定的型別。
5、乘法表示式 5級
「 * 」 乘法運算子;「 / 」除法運算子;「 % 」 取餘運算子。
6、加法運算子 6級
「 + 」加法運算子;「 - 」減法運算子。
7、移位運算子 7級
<< 左移運算子;>> 右移運算子。
8、關係運算子 8級
<、<=、>、>=關係運算子。
9、相等運算子 9級
「 == 」等於運算子;「 != 」不等於運算子。
10、位與運算子 10級
「 & 」按位與運算子
11、位異或運算子 11級
「 ∧ 」按位異或運算子(bitwise exclusive or operator)。
12、位或運算子 12 級
「 | 」按位或運算子(bitwise inclusive or operator)。
13、邏輯與運算子 13級
「&&」邏輯與運算子。
14、邏輯或運算子 14 級
「 || 」邏輯或運算子。
15、三元條件運算子 15級
? :條件運算子。
16、賦值運算子 16 級
=、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=賦值運算子。
17、逗號運算子 17級
「,」逗號運算子。
具體可參見下圖:
c語言中邏輯運算子非"!"與"&&"或"||"的優先順序怎麼說?
16樓:a羅網天下
邏輯非的優先順序最高,邏輯與次之,邏輯或最低,即:!(非) → &&(與) → ||(或)
記憶口訣:not(非) and(與) or(或)
運算規則
1)&&:當且僅當兩個運算量的值都為"真"時,運算結果為"真",否則為"假"。
2) || :當且僅當兩個運算量的值都為"假"時,運算結果為"假",否則為"真"。
3) ! :當運算量的值為"真"時,運算結果為"假";當運算量的值為"假"時,運算結果為"真"。
例如,假定x=5,則(x>=0) && (x<10)的值為"真",(x<-1) || (x>5)的值為"假"。
優先順序
優先順序與求值順序無關。如a+b && b*c,雖然*優先順序最高,但這個表示式求值順序是從左到右。
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。
相同優先順序中,按結合性進行結合。大多數運算子結合性是從左到右,只有三個優先順序是從右至左結合的,它們是單目運算子、條件運算子、賦值運算子。
基本的優先順序需要記住:
指標最優,單目運算優於雙目運算。如正負號。
先算術運算,後移位運算,最後位運算。請特別注意:1 << 3 + 2 & 7等價於 (1 << (3 + 2))&7.
邏輯運算最後結合。
C語言邏輯運算子問題,c語言邏輯運算子 我不明白 和 到底是怎麼運算的
c表示式中的操作符按優先順序順序結合,本表示式中運算子的優先順序順序從高到低為 所以表示式計算分解為 temp1 year 4 temp2 year 100 te year 400 temp4 temp1 0 temp5 temp2 0 temp6 te 0 temp7 temp5 temp6 ex...
c 邏輯運算子,c 中邏輯運算子的問題。
x 2 y和z的值不變 邏輯運算 x的值為1,因此後面的語句沒有執行 參考 短路求值 作為 和 操作符的運算元表示式,這些表示式在進行求值時,只要最終的結果已經可以確定是真或假,求值過程便告終止,這稱之為短路求值。這是這兩個操作符的乙個重要屬性。假如expr1和expr2都是表示式,並且expr1的...
c語言中邏輯非是什麼意思,C語言中邏輯非是什麼意思
邏輯非,是邏輯運算中的一種,就是指本來值的反值。定義 邏輯非 邏輯運算子。邏輯非 就是指本來值的反值。例如 0 這個邏輯表示式的值為1.判斷的這個數為0,成立,則其表示式的值為1 1 這個邏輯表示式的值為0.判斷的這個數非0,不成立,則其表示式的值為0 邏輯非是c語言中邏輯運算中的一種,其運算符號為...