C語言中和到底先算哪個在C語言中,,和的優先順序哪個高?

2021-03-05 08:34:28 字數 4238 閱讀 2008

1樓:忘記旅途了

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

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

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

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

2樓:匿名使用者

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

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

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

3樓:肖國林

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

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

4樓:米飯亦是菜餚啊

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

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

5樓:匿名使用者

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

6樓:冷天釋

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

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

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

7樓:匿名使用者

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

8樓:匿名使用者

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

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

9樓:匿名使用者

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

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

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

10樓:匿名使用者

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

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

11樓:沒有響應

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

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

12樓:奈米言

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

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

13樓:金魚

經過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

14樓:匿名使用者

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

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

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

15樓:匿名使用者

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

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

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

16樓:卩s灬飛飛

結果是1.

這個不是優先順序的問題

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

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

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

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

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

c語言邏輯運算子&&和||同時存在時候,不應該先算&&嗎?

17樓:網海1書生

++的優先順序最高,所以先算++x,結果x=1,後面

的運算子是||,這就意味著不管||後面的運算結果是什麼,最後結果都是1,所以儘管&&的優先順序高,但也不用計算了,所以最終結果x=1,y=0,z=0

注意一點:優先順序與求值順序無關!

18樓:匿名使用者

這題估計90%以上的人答不對。

按照標準,&&的優先順序高於||,應該是先計算++y&&++z,然後計算 ++x||1

但程式設計測試卻發現,是先運算了||,由於||是從左向右執行,所以,計算了++x後,就不計算了(++x為true)。

至於為什麼出現這種情況,我沒找到合理的解釋,期待專家解惑吧。

只能認為是寫編譯器的人,把|| 和 && 當作同級處理了。

所以在做實際專案時,也要避免這種情況,用()來確定運算的先後順序。

----------------------------------明白了,表示式解析為:++x || (++y&&++z)&&優先順序確實是高,所以,(++y&&++z)做為一個整體。

而||的規則就是,左側為true,右側不執行。 所以,即便是++x || (),右面是括號,優先順序最高,也是先執行||左側的。

19樓:奧斯卡軒

是的三目運算子號的運算順序是與或非,但是要注意在沒有小括號的前提下優先順序是這樣的。

20樓:

這是優化問題,不僅是優先順序問題。編譯系統會進行很多優化,避免不必要的計算,以提高效率。不會照你給出的計算式計算的。這是編譯器很重要的功能。

21樓:匿名使用者

這道題的考點是區別兩個 | 和一個 | 他們的作用是什麼,一個 | 兩邊都會計算,兩個 | 時左邊為1時右邊就不計算了(不管後面有什麼優先順序高的都不計算,你試著計算一下後面的結果沒有任何意義,|| 的作用就是節省cpu大腦資源來偷懶用的),&&同理取反,&&左邊為0時右邊不計算了節省資源,所以這題答案是0。

c語言中&&和||誰的優先順序大

22樓:匿名使用者

&&的優先順序比||高,在邏輯操作符中,邏輯非(!)的優先順序最高,邏輯或(||)的優先順序最低

23樓:

printf("%d",1||1&&0); 輸出1

24樓:匿名使用者

優先順序相同 執行順序從左至右

c語言中和和分別有什麼用啊,C語言中 和 和 分別有什麼用啊

c語言中,表示把兩個巨集引數貼合在一起,而單個 的功能是將其後面的巨集引數進行字串化操作。即,include define f a,b a b define g a a define h a g a int main 被稱為連線符 直接貼合 用來將兩個巨集引數連線為一個巨集引數。而單個 的功能是將其...

c語言中是什麼意思,C語言中 和 符號是什麼意思?

是與的意思 即左右兩邊都成立才成立 應該是要 左邊成立且右邊不成立才成立 00000000000000000000 的優先順序大於 所以 a b就是 a b 兩個 表示 邏輯與 一個 表示 位與 與非,就是 與 和 非 的合體,比如a b就是a和我b並在一起的對立。不是一體的 和!是分開的 因為!有...

C語言中都什麼意思,C語言中 和 符號是什麼意思?

一樓不夠詳細嘛 非運算子 就是原來是 真 1 的變成假 0 專原來是假 0 的變成真屬 1 求餘運算子,a b等於a除以b之後的餘數 不過一定注意了 兩邊的數字必須問整型的 與運算子,就是and的意思 一假則假 或運算子,就是or的意思 一真則真 非操作,就是原來是真 1 的變成假 0 原來是假 0...