c語言邏輯運算順序,C語言邏輯運算子順序

時間 2022-04-19 14:15:16

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語言中邏輯運算中的一種,其運算符號為...