1樓:
c語言邏輯判斷是從左到右順序判斷的。
--x||--y&&++z。。從反彙編語句中就可以看出來,是先判斷--x,然後再判斷後面。
雖然&&是優先於||,但他們是同級的,即使先判斷後面的,最後還是會需要判斷--x,所以,--x在前,直接判斷--x,如果為1,就直接不需要判斷後面的了,會節省很多時間。
--y&&++z||--x。。就會先判斷前面--y&&++z。。說明邏輯判斷&&、||是同一級別的,都是從左到右開始判斷。。用反彙編來檢查順序就可知道。
怎麼體現&&的優先順序呢?
如:--x||--y&&++z||++n。。雖然還是從左到右的順序邏輯判斷,而中間的--y&&++z,一定是需要先計算--y&&++z的結果,才能和--x與++n來判斷。。
而不是先--x||--y,然後&&++z,這就是&&優先順序的體現了。
2樓:匿名使用者
運算子按位與 (&)優先順序 8,
用於: 表示式 & 表示式
邏輯與 (&&) 優先順序 11, 用於: 表示式 && 表示式邏輯或 ( || ) 優先順序 12, 用於: 表示式 || 表示式條件運算子 (?:
) 優先順序 13, 用於三目運算: 表示式1? 表示式2:
表示式3
優先順序 8 高於 11, 高於 12, 高於 13。
3樓:匿名使用者
查百科優先順序詞條即可知道所有運算子優先順序
網頁鏈結
實際寫**中並不用關注這個問題 一般需要複雜表示式的情況下會盡可能進行拆分,如果實在無法拆分,也應該盡可能全部加上括號,以防在優先順序上產生問題
4樓:哈哈呵呵你好
c語言裡面&&和||都是邏輯操作,乙個是邏輯與乙個邏輯或,他們的優先順序是一致的。
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樓:匿名使用者
,逗號運算在c語言中是最後的。&& || 是同級,看哪個在前就先算哪個。不過要注意的是&& ||都有不完全運送。
對於&&運送則從左到右進行判斷,如果左邊為0,則右邊不再計算,整個&&運算就是0.||運算也是從左到右,如果有左邊為1則右邊也不在計算,直接輸出1.
++a||++b&&++c這個就可以先判斷++a||++b,這裡呢,根據上述所說的進行判斷,如果1則繼續判斷&&,如果0則直接輸出0,不做最後的++c
9樓:匿名使用者
用機器上執行一下就知道了,這個先運算++a,如果是真(非0)就停止,如果是0,則再算++b
接下來,如果++b為0,則停止,如果++b不為0,就再算++c
10樓:沒有響應
&& 和||的優先順序一樣 按從左向右的順序計算
不過實際使用的時候最好不要靠優先順序 ()比優先順序可靠的多 用括號可以讓程式的可讀性提高出錯率降低 所以優先順序什麼的根本不用記
11樓:奈米言
從左自右,因為他們級別一樣!
c語言中 &&和‖誰優先順序更高
12樓:匿名使用者
&& 的高
優先順序【高到低】:
第一級:
圓括號【()】、下標運算子【】、分量運算子的指向結構體成員運算子【->】、結構體成員運算子【.】
第二級:
邏輯非運算子【!】、按位取反運算子【~】、自增自減運算子【++ --】、負號運算子【-】、型別轉換運算子【(型別)】、指標運算子和取位址運算子【*和&】、長度運算子【sizeof】
第**:乘法運算子【*】、除法運算子【/】、取餘運算子【%】第四級:加法運算子【+】、減法運算子【-】第五級:
左移動運算子【<<】、右移動運算子【>>】第六級:關係運算子【< > <= >= 】第七級:等於運算子【==】、不等於運算子【!
=】第八級:按位與運算子【&】
第九級:按位異或運算子【^】
第十級:按位或運算子【|】
第十一級:邏輯與運算子【&&】
第十二級:邏輯或運算子【||】
第十**:條件運算子【?:】
第十四級:賦值運算子【= += -= *= /= %= >>= <<.= &= |= ^=】
第十五級:逗號運算子【,】
13樓:卩s灬飛飛
結果是1.
這個不是優先順序的問題。&&和||是同級的,從左往右計算。
這個問題是短路求值的問題。
b=0,!b這個表示式是真,!b||後面無論是什麼這個表示式都是真了。
所以後面的內容就不會再執行了。所以++a&&++c根本就沒有執行過。。
如果b=1的話,!b為假,所以就會執行後面的內容了,這是c就是2了。
14樓:匿名使用者
&& 高於||,就像是乘法高於加法一樣
15樓:匿名使用者
用機器上執行一下就知道了,這個先運算++a,如果是真(非0)就停止,如果是0,則再算++b
接下來,如果++b為0,則停止,如果++b不為0,就再算++c
16樓:匿名使用者
,逗號運算在c語言中是最後的。&& || 是同級,看哪個在前就先算哪個。不過要注意的是&& ||都有不完全運送。
對於&&運送則從左到右進行判斷,如果左邊為0,則右邊不再計算,整個&&運算就是0.||運算也是從左到右,如果有左邊為1則右邊也不在計算,直接輸出1.
++a||++b&&++c這個就可以先判斷++a||++b,這裡呢,根據上述所說的進行判斷,如果1則繼續判斷&&,如果0則直接輸出0,不做最後的++c
17樓:沒有響應
&& 和||的優先順序一樣 按從左向右的順序計算
不過實際使用的時候最好不要靠優先順序 ()比優先順序可靠的多 用括號可以讓程式的可讀性提高出錯率降低 所以優先順序什麼的根本不用記
18樓:編輯
與或非是同一級的啊,除非&&表示的是按位與,那麼||優先順序高一些
c語言中&&和||的優先順序一樣嗎?
19樓:卩s灬飛飛
結果是1.
這個不是優先順序的問題
。&&和||是同級的,從左往右計算。
這個問題是短路求值的問題。
b=0,!b這個表示式是真,!b||後面無論是什麼這個表示式都是真了。
所以後面的內容就不會再執行了。所以++a&&++c根本就沒有執行過。。
如果b=1的話,!b為假,所以就會執行後面的內容了,這是c就是2了。
c語言中&&和||誰的優先順序大
20樓:匿名使用者
&&的優先順序比||高,在邏輯操作符中,邏輯非(!)的優先順序最高,邏輯或(||)的優先順序最低
21樓:
printf("%d",1||1&&0); 輸出1
22樓:匿名使用者
優先順序相同 執行順序從左至右
c語言中&&和>的優先順序哪個更高?
23樓:藍太陽·十七
!(非)優先順序最高&&和||都在關係運算子之後。
24樓:
關係運算子的優先順序高於邏輯運算子
當然是 > 高於 &&了
還有 邏輯運算子中 ! 的優先順序要高於 關係運算子
25樓:新生飛飛
#include
int main()
結果是0,為假
說明先執行(1>-1)後執行 0&&
26樓:匿名使用者
>的優先順序要高一些。其實你完全不用去記這些的,在你不清楚那個的優先順序高的時候用()就好了。()的優先順序最高。
c語言中&&和||到底先算哪個?
27樓:忘記旅途了
這裡出現三個運算子,++>&&>||,所以先算++,a=++a=2,為真,後面就不算了,
&&前面是0時,&&符號後面的不計算.
||前面不是0時,||號後面的不計算.
所以x=1,a=2,b=1,c=1
28樓:匿名使用者
,逗號運算在c語言中是最後的。&& || 是同級,看哪個在前就先算哪個。不過要注意的是&& ||都有不完全運送。
對於&&運送則從左到右進行判斷,如果左邊為0,則右邊不再計算,整個&&運算就是0.||運算也是從左到右,如果有左邊為1則右邊也不在計算,直接輸出1.
++a||++b&&++c這個就可以先判斷++a||++b,這裡呢,根據上述所說的進行判斷,如果1則繼續判斷&&,如果0則直接輸出0,不做最後的++c
29樓:肖國林
其實計算機是這樣算的,他會以||為界將表示式分為兩部分,他會先算前一部分,如果前一部分為真,他將停止運算,如果為假,他才會算第二部分,你這裡第一部分就為真了,第二部分當然也就不會算了。關於計算機對表示式優先順序的判斷,如果你學了資料結構中棧的結構和應用你就明白了。不過像這種表示式,最好是手動加上括號,而不是靠計算機來自動識別優先順序。
像這樣的,我的編譯器都會警告,我都是會加上括號的,這樣就沒有警告了。如果不信你可以把&&和它的兩個運算元括起來,我相信結果還是這樣的。
30樓:公尺飯亦是菜餚啊
比|++比||和&&的優先順序都要高,如果優先順序高就先執行的話,那麼||和&&執行之前,全部數字(除了x)都已經是2了喲~
毫無疑問的是a||b&&c是等價於a||(b&&c)的,但對於||來說,即使右邊有乙個括號,但||還是會先計算左邊
31樓:匿名使用者
這個要由c的預設||處理方式說明,||只要有乙個成立就成立,所以++a後知道是非0就成立了,後面不執行。
32樓:冷天釋
目測樓主沒搞清楚為毛要從左開始算。。。。。。
建議先看&&和||的定義在說。
這個順序不是優先順序的問題,這是結合順序的問題。。。。。。。。
33樓:匿名使用者
它們的優先順序是一樣的。
34樓:匿名使用者
邏輯的「與」和「或」,運算順序上是同級的,誰在前面就先算哪個。
c語言裡關係運算子優先順序怎麼分前後翱
和 的優先順序高於 和 又都高於 和 又都高於 以上運算子都是左結合。先乘除後加減,這兩個符號優先順序相同 具有左結合性 優先順序低於 低乙個層次 望採納 c語言提供6種關係運算子,按優先順序高低它們分別是 c語言提供6種關係運算子,按優先順序高低它們分別是 以下4種優先順序相同 高 1 2 3 4...
c語言中字元陣列和字元指標的問題
在函式內 char陣列被定義成局 部變數,函式執行後會被系統給釋放掉。但char p 則是定義成乙個常量,程式執行完後才會釋放掉。所以在返回char p 時會返回亂碼,但 char p 則可以全部顯示出來 當然 char 也可以定義成靜態變數 這樣就可以顯示出來了不如static char p he...
C語言正確定義結構和初值,C語言中是如何定義常量的啊?
39 std就是結構體型別的別名。由於typedef的時候,只有struct,所以這是乙個無名結構。只有通過std去定義。於是c和d都是錯的 而結構體中,c的型別是char,所以也只能用字元型去初始化。b中的 a 和 b 是字串,所以不對。選a40 union中,n和c共用記憶體。所以 在這裡賦值u...