c語言中與的優先順序,C語言中和的優先順序問題

2021-03-04 01:01:31 字數 6029 閱讀 2989

1樓:也想幸福

1,1,1,true

1賦值給c,c賦給b,b賦給a。

然後,第二個表示式的話結果肯定是布林值,而有題目觀之,此表示式不為0,所以d為true

優先順序++(--)>&&>||

2樓:匿名使用者

輸出是2 1 1 1

(a++)||(b++)&&(c++)等同於(a++) || ((b++)&&(c++))

而對於 ||來說,先算左邊表示式的值

3樓:匿名使用者

&&和ll運算子都是同一優先順序的,是自左向右結合運算,該程式的運算結果為1即為真,因為++all++b結果為1,再投行&&++c兩邊都為真所以整個邏輯表示式為1

a=2,b=1,c=1

4樓:史前捍衛

||和&&是同級別的邏輯運算,遇到這種情況一般是從右往左運算,結果應該是2221

c語言中&&和||的優先順序問題

5樓:金魚

經過n遍的除錯,證明:

1、||和&&優先順序相等,且都是從左往右運算2、在出現||和&&的語句中,並不對a++進行運算,只判斷它的初值。當然,這條語句結束後,涉及判斷的表示式就會進行相應的運算(如:a++)。

3、在&&運算中,如果&&前面的邏輯值為0(如:令a=0; a++&&b++,此時,a還沒有進行++運算,仍為0。但是在本語句結束後就自加1),則結束本語句;如果&&前面的邏輯值為1(如:

上面的情況令a=1),則繼續判斷&&後面的值是否為1,如果為1,則繼續判斷後面的邏輯運算;如果為0,而結束本語句。

4、在||運算中,如果||前的邏輯值為1,則結束本語句如果||前的邏輯值為0,則繼續判斷,若||後的邏輯值為1(如:a||b++, 其中b=1),則結束本語句,否則繼續往後判斷舉個實際的例子:#include

void main()

執行結果:a=1b=1c=1d=0

6樓:匿名使用者

先++x,使得x變為1,此時++x為true(因為不等於0),那麼,||是或的意思,只要++x為true了,不管||後面是什麼,都不執行。

所以,++y && ++z都不會執行。

這種求值策略為「短路求值」。

7樓:匿名使用者

第一步,是自右向左賦值,使得xyz都為0.

第二步,因為&&優先順序高所以把第二個式子看成++x||(++y&&++z),然後再看||,由於或運算的結合方向是自左向右,所以先進行左邊的++x,使x變為1,此時整個式子為true,就不用進行後面且運算了(計算機也是隻要看到||,先算左邊,如果左邊衛true,那麼右邊的就不執行了)

c語言中 &&和‖誰優先順序更高

8樓:匿名使用者

&& 的高

優先順序【高到低】:

第一級:

圓括號【()】、下標運算子【】、分量運算子的指向結構體成員運算子【->】、結構體成員運算子【.】

第二級:

邏輯非運算子【!】、按位取反運算子【~】、自增自減運算子【++ --】、負號運算子【-】、型別轉換運算子【(型別)】、指標運算子和取地址運算子【*和&】、長度運算子【sizeof】

第**:乘法運算子【*】、除法運算子【/】、取餘運算子【%】第四級:加法運算子【+】、減法運算子【-】第五級:

左移動運算子【<<】、右移動運算子【>>】第六級:關係運算子【< > <= >= 】第七級:等於運算子【==】、不等於運算子【!

=】第八級:按位與運算子【&】

第九級:按位異或運算子【^】

第十級:按位或運算子【|】

第十一級:邏輯與運算子【&&】

第十二級:邏輯或運算子【||】

第十**:條件運算子【?:】

第十四級:賦值運算子【= += -= *= /= %= >>= <<.= &= |= ^=】

第十五級:逗號運算子【,】

9樓:卩s灬飛飛

結果是1.

這個不是優先順序的問題。&&和||是同級的,從左往右計算。

這個問題是短路求值的問題。

b=0,!b這個表示式是真,!b||後面無論是什麼這個表示式都是真了。

所以後面的內容就不會再執行了。所以++a&&++c根本就沒有執行過。。

如果b=1的話,!b為假,所以就會執行後面的內容了,這是c就是2了。

10樓:匿名使用者

&& 高於||,就像是乘法高於加法一樣

11樓:匿名使用者

用機器上執行一下就知道了,這個先運算++a,如果是真(非0)就停止,如果是0,則再算++b

接下來,如果++b為0,則停止,如果++b不為0,就再算++c

12樓:匿名使用者

,逗號運算在c語言中是最後的。&& || 是同級,看哪個在前就先算哪個。不過要注意的是&& ||都有不完全運送。

對於&&運送則從左到右進行判斷,如果左邊為0,則右邊不再計算,整個&&運算就是0.||運算也是從左到右,如果有左邊為1則右邊也不在計算,直接輸出1.

++a||++b&&++c這個就可以先判斷++a||++b,這裡呢,根據上述所說的進行判斷,如果1則繼續判斷&&,如果0則直接輸出0,不做最後的++c

13樓:沒有響應

&& 和||的優先順序一樣 按從左向右的順序計算

不過實際使用的時候最好不要靠優先順序 ()比優先順序可靠的多 用括號可以讓程式的可讀性提高出錯率降低 所以優先順序什麼的根本不用記

14樓:編輯

與或非是同一級的啊,除非&&表示的是按位與,那麼||優先順序高一些

c語言中&&和||到底先算哪個?

15樓:忘記旅途了

這裡出現三個運算子,++>&&>||,所以先算++,a=++a=2,為真,後面就不算了,

&&前面是0時,&&符號後面的不計算.

||前面不是0時,||號後面的不計算.

所以x=1,a=2,b=1,c=1

16樓:匿名使用者

,逗號運算在c語言中是最後的。&& || 是同級,看哪個在前就先算哪個。不過要注意的是&& ||都有不完全運送。

對於&&運送則從左到右進行判斷,如果左邊為0,則右邊不再計算,整個&&運算就是0.||運算也是從左到右,如果有左邊為1則右邊也不在計算,直接輸出1.

++a||++b&&++c這個就可以先判斷++a||++b,這裡呢,根據上述所說的進行判斷,如果1則繼續判斷&&,如果0則直接輸出0,不做最後的++c

17樓:肖國林

其實計算機是這樣算的,他會以||為界將表示式分為兩部分,他會先算前一部分,如果前一部分為真,他將停止運算,如果為假,他才會算第二部分,你這裡第一部分就為真了,第二部分當然也就不會算了。關於計算機對表示式優先順序的判斷,如果你學了資料結構中棧的結構和應用你就明白了。不過像這種表示式,最好是手動加上括號,而不是靠計算機來自動識別優先順序。

像這樣的,我的編譯器都會警告,我都是會加上括號的,這樣就沒有警告了。如果不信你可以把&&和它的兩個運算元括起來,我相信結果還是這樣的。

18樓:米飯亦是菜餚啊

比|++比||和&&的優先順序都要高,如果優先順序高就先執行的話,那麼||和&&執行之前,全部數字(除了x)都已經是2了喲~

毫無疑問的是a||b&&c是等價於a||(b&&c)的,但對於||來說,即使右邊有一個括號,但||還是會先計算左邊

19樓:匿名使用者

這個要由c的預設||處理方式說明,||只要有一個成立就成立,所以++a後知道是非0就成立了,後面不執行。

20樓:冷天釋

目測樓主沒搞清楚為毛要從左開始算。。。。。。

建議先看&&和||的定義在說。

這個順序不是優先順序的問題,這是結合順序的問題。。。。。。。。

21樓:匿名使用者

它們的優先順序是一樣的。

22樓:匿名使用者

邏輯的「與」和「或」,運算順序上是同級的,誰在前面就先算哪個。

在c語言中,,&& 和||的優先順序哪個高?

23樓:匿名使用者

,逗號運算在c語言中是最後的。&& || 是同級,看哪個在前就先算哪個。不過要注意的是&& ||都有不完全運送。

對於&&運送則從左到右進行判斷,如果左邊為0,則右邊不再計算,整個&&運算就是0.||運算也是從左到右,如果有左邊為1則右邊也不在計算,直接輸出1.

++a||++b&&++c這個就可以先判斷++a||++b,這裡呢,根據上述所說的進行判斷,如果1則繼續判斷&&,如果0則直接輸出0,不做最後的++c

24樓:匿名使用者

用機器上執行一下就知道了,這個先運算++a,如果是真(非0)就停止,如果是0,則再算++b

接下來,如果++b為0,則停止,如果++b不為0,就再算++c

25樓:沒有響應

&& 和||的優先順序一樣 按從左向右的順序計算

不過實際使用的時候最好不要靠優先順序 ()比優先順序可靠的多 用括號可以讓程式的可讀性提高出錯率降低 所以優先順序什麼的根本不用記

26樓:奈米言

從左自右,因為他們級別一樣!

c語言中邏輯運算子非"!"與"&&"或"||"的優先順序怎麼說?

27樓: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.

邏輯運算最後結合。

28樓:喜歡種蘑菇

同一優先順序的運算子,結合次序由結合方向所決定。簡單記就是:! > 算術運算子 > 關係運算子 > && > || > 賦值運算子。

29樓:飛雪射鹿笑倚鴛

c語言中邏輯運算子優先順序非"!"與>"&&">"||",建議混合使用的時候加上括號,這樣的**便於自己和其他人維護。

30樓:我喜歡蘆潔

「!」>「&&」>「‖」

31樓:

不知道的就加括號,這是常識,不必記

c語言中&&和||的優先順序一樣嗎?

32樓:卩s灬飛飛

結果是1.

這個不是優先順序的問題

。&&和||是同級的,從左往右計算。

這個問題是短路求值的問題。

b=0,!b這個表示式是真,!b||後面無論是什麼這個表示式都是真了。

所以後面的內容就不會再執行了。所以++a&&++c根本就沒有執行過。。

如果b=1的話,!b為假,所以就會執行後面的內容了,這是c就是2了。

c語言中算術運算子優先順序的問題C語言中算術運算子優先順序的問題

1級優先順序 左結合 圓括號 下標運算子 指向結構體成員運算子 結構體成員運算子 2級優先順序 右結合 邏輯非運算子 按位取反運算子 字首增量運算子 字首增量運算子 正號運算子 負號運算子 型別 型別轉換運算子 指標運算子 地址與運算子 sizeof 長度運算子 3級優先順序 左結合 乘法運算子 除...

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

這是複合賦值表示式。等同於 p p 1 指標p所指向的內容加1後儲存到指標p所指向的地址中。所以,優先順序是先算 在這裡 運算子並不是乘法運算子,而是指的間接引用運算子,然後再算 運算子。運算子的優先順序高於符合運算子 即 p 1的功能等同於 p 或 p 也就是說,增加的是p指向的內容,而不是改變指...

C語言指標的優先順序是多少,c語言中,他們的優先順序是一樣的嗎

a 和 a 結果一樣,a 是整句語句做完了才 所以有沒括號都一個樣.的優先順序是2 的優先順序也是2 結合方向是從右到左,故先運算 再運算 c語言中,他們的優先順序是一樣的嗎 由於 號有表示指標的一元運算子和表示乘法的二元運算子之分。所以,在表示指標時是高於 和 的 是 這三個嗎?若是,他們的優先順...