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

時間 2021-10-17 05:03:01

1樓:匿名使用者

邏輯運算子有三種,分別為&&(與運算)||(或運算)!(非運算),三者的優先順序順序為!>&&>||。

ps.1、與運算子(&&)和或運算子(||)均為雙目運算子。具有左結合性。非運算子(!)為單目運算子,具有右結合性。

2、「&&」和「||」優先順序低於關係運算子,「!」優先順序高於算術運算子。

2樓:

a=b=c=1

++a++b

++c++b&&++c

++a||(++b&&++c)

3樓:匿名使用者

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就不執行了 這樣判斷也符合 該語句的執行順序

4樓:匿名使用者

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)最後被執行。

完畢。樓主明白啦不?@_@

5樓:通訊小王子

先++,再||跟&&

c語言中運算子有哪幾種,優先順序順序是怎樣

6樓:楓璽

c語言中,運算子除了常見的三大類,算術運算子、關

系運算子與邏輯運算子之外,還有一些用於完成特殊任務的運算子。

運算子的運算優先順序共分為15 級,1 級最高,15 級最低。 在表示式中,優先順序較高的先於優先順序較低的進行運算。而在一個運算量兩側的運算子 優先順序相同時,則按運算子的結合性所規定的結合方向處理。

一級運算子:標識,常量,字串文字量,優先順序提升表示式最優先執行。

二級運算子:陣列下標運算(expression)、函式呼叫(argument-expression-list)、成員訪問(identifier、 -> identifier)、字尾自增(i++)、字尾自減(i--)、 複合初始化(initializer-list)。

**運算子:字首自增(++i)、字首自減(--i)、單目轉型表式式(取地址& ,提領 * , 正號+ ,負號-、 位反~ 邏輯否!)、求型別長度(sizeof unary-expression)。

四級運算子:強制表示式成為type-name指定的型別( type-name ) cast-expression。

五級運算子:「 * 」 乘法運算子。

六級運算子:「 + 」加法運算子。

七級運算子:<< 左移運算子;>> 右移運算子。

八級運算子:<、<=、>、>=關係運算子。

九級運算子:「 == 」等於運算子;「 != 」不等於運算子。

十級運算子:「 & 」按位與運算子。

十一級運算子:「 ∧ 」按位異或運算子。

十二級運算子:「 | 」按位或運算子。

十**運算子:「&&」邏輯與運算子。

十四級運算子:「 || 」邏輯或運算子。

十五級運算子:? :條件運算子。

擴充套件資料

c語言中各運算子的結合性:

1、左結合性(自左至右):

例如算術運算子的結合性是自左至右,即先左後右。如有表示式x-y+z 則y 應先與「-」號結合,執行x-y 運算,然後再執行+z 的運算。這種自左至右的結合方向就稱為「左結合性」。

2、右結合性(自右至左)

自右至左的結合方向稱為「右結合性」。最典型的右結合 性運算子是賦值運算子。如x=y=z,由於「=」的右結合性,應先執行y=z 再執行x=(y=z)運算。

c語言運算子中有不少為右結合性,應注意區別,以避免理解錯誤。

7樓:匿名使用者

c語言的運算子包括單目運算子、雙目運算子、三目運算子,優先順序如下:

第1優先順序:各種括號,如()、等、成員運算子 . ;

第2優先順序:所有單目運算子,如++、--、!、~等;

第3優先順序:乘法運算子*、除法運算子/、求餘運算子%;

第4優先順序:加法運算子+、減法運算子-;

第5優先順序:移位運算子<<、>>;

第6優先順序:大於運算子》、大於等於運算子》=、小於運算子<、小於等於運算子<=;

第7優先順序:等於運算子==、不等於運算子!=;

第8優先順序:按位與運算子&;

第9優先順序:按位異或運算子^;

第10優先順序:按位或運算子|;

第11優先順序:邏輯與運算子&&;

第12優先順序:邏輯或運算子||;

第13優先順序:三目條件運算子 ?: ;

第14優先順序:各種賦值運算子,如=、+=、-=、*=、/= 等;

第15優先順序:逗號運算, 。

8樓:

優先順序 運算子 含義 運算子型別 結合方向

15 () 圓括號 單目 自左向右

下標運算子

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

、 結構體成員運算子

14 ! 邏輯非運算子 自右向左

~ 按位取反運算子

++ 自增運算子

-- 自減運算子

- 負號運算子

(型別) 型別轉換運算子

* 指標運算子

& 地址運算子

sizeof 長度運算子

13 * 乘法運算子 雙目 自左向右

/ 除法運算子

% 求餘運算子

12 + 加法運算子

- 減法運算子

11 << 左移運算子

>> 右移運算子

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

9 == 等於運算子

!= 不等於運算子

8 & 按位與運算子

7 ^ 按位異或運算子

6 | 按位或運算子

5 && 邏輯與運算子

4 || 邏輯或運算子

3 ?: 條件運算子 三目 自右向左

2 =、+=、-=、*=、

/=、%=、>>=、

<<=、&=、^=、|= 賦值運算子 雙目

1 , 逗號運算子 雙目 自左向右

中國物聯網校企聯盟技術部

c語言邏輯運算子,C語言中邏輯運算子的規則是什麼

伊婷婷 c語言中的邏輯運算子就三種,與 或 非,它們的優先極順序為非,與,或。它們含義如下,當操做數為真時,結果為假,反之也成立,並且它的優先極也最高,因為只有它是單目運算子,只有當兩個操做數都為真時,結果才為真,否則為假。只有當兩個操做數都為假時,結果才為假,否則結果為真。除了這些,邏輯運算子還有...

c語言邏輯運算子問題,c語言邏輯運算子 我不明白 和 到底是怎麼運算的

x y z 優先順序,所以上式等價於 x y z 這裡 x和 y z 是同級別的,表示式從左往右掃描,x成立,後面就直接跳過,輸出100 x y z 同理,優先順序 x y z x值是0,跳過 y 但是這隻能說明 的左邊是0,右邊還是要計算的,z執行了,所以最後輸出0,1,0 說明白點,這裡的優先順...

C語言邏輯運算,c語言邏輯運算子 我不明白 和 到底是怎麼運算的

if 條件表示式 語句1 語句2 if是條件判斷的關鍵字,後面的小括號裡包含的是條件表示式。如果條件表示式為非0,執行大括號 裡的 語句1 如果條件表示式值為0,則不執行 裡的 語句1 而是調過 語句1 直接執行 語句2 你這個問題的條件表示式是 i k i j j k 這個表示式被兩個 分為了三部...