與和或c語言優先順序
A. c語言中條件運算符與邏輯或和與,哪個優先順序更高
OperatorsAssociativity
()[]->.lefttoright
!~++--+-*(type)sizeofrighttoleft
*/%lefttoright
+-lefttoright
<<>>lefttoright
<<=>>=lefttoright
==!=lefttoright
&lefttoright
^lefttoright
|lefttoright
&&lefttoright
||lefttoright
?:righttoleft
=+=-=*=/=%=&=^=|=<<=>>=righttoleft
,lefttoright
B. c語言中「與」和「或」的優先順序是什麼
經過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<stdio.h>
void main()
{
int a,b,c,d;
a=0;
b=0;
c=1;
d=a++||b++&&c++; /*運算過程是:第一步,判斷a 的邏輯值是否為0,可知為0,因此繼續往後判斷(因為a++這個表達式參與了判斷,所以在這條語句結束後,a會變成1);第二步,判斷b,可知b的邏輯值0,所以a||b==0,因為之後遇到的是&&運算,而又有&&前的邏輯值為0,直接結束本語句,因此C++並沒有參與判斷,保持值不變(當然,b有參加判斷,結束本語句後,b為1);第三步,由於0&&c++==0,所以d=0*/
printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);
}運行結果:a=1b=1c=1d=0
C. C語言中前++和—>的優先順序
->
高於++;
詳情請見如下:
c語言的操作符共有15個優先順序,如下:
Operators
Associativity
()
[]
->
.
left
to
right
!
~
++
--
+
-
*
(type)
sizeof
right
to
left
*
/
%
left
to
right
+
-
left
to
right
<<
>>
left
to
right
<
<=
>
>=
left
to
right
==
!=
left
to
right
&
left
to
right
^
left
to
right
|
left
to
right
&&
left
to
right
||
left
to
right
?:
right
to
left
=
+=
-=
*=
/=
%=
&=
^=
|=
<<=
>>=
right
to
left
,
left
to
right
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。
所有的優先順序中,只有三個優先順序是從右至左結合的,它們是單目運算符、條件運算符、賦值運算符。其它的都是從左至右結合。
具有最高優先順序的其實並不算是真正的運算符,它們算是一類特殊的操作。()是與函數相關,[]與數組相關,而->及.是取結構成員。
其次是單目運算符,所有的單目運算符具有相同的優先順序,因此在我認為的
真正的運算符中它們具有最高的優先順序,又由於它們都是從右至左結合的,因此*p++與*(p++)等效是毫無疑問的。
接下來是算術運算符,*、/、%的優先順序當然比+、-高了。
移位運算符緊隨其後。
其次的關系運算符中,<
<=
>
>=要比
==
!=高一個級別,不大好理解。
所有的邏輯操作符都具有不同的優先順序(單目運算符出外,!和~)
邏輯位操作符的"與"比"或"高,而"異或"則在它們之間。
跟在其後的&&比||高。
接下來的是條件運算符,賦值運算符及逗號運算符。
在C語言中,只有4個運算符規定了運算方向,它們是&&、|
|、條件運算符及賦值運算符。
&&、|
|都是先計算左邊表達式的值,當左邊表達式的值能確定整個表達式的值時,就不再計算右邊表達式的值。如
a
=
0
&&
b;
&&運算符的左邊位0,則右邊表達式b就不再判斷。
在條件運算符中。如a?b:c;先判斷a的值,再根據a的值對b或c之中的一個進行求值。
賦值表達式則規定先對右邊的表達式求值,因此使
a
=
b
=
c
=
6;成為可能
D. c語言中與或的優先順序
||與>或 ,更細一來點是:!自 ---> & ---> ^ ---> | ---> && ---> ||。C語言中的運算優先順序和算數優先順序一樣,只要把運算符的優先順序記住就可以了。
E. C語言中,&和<<的優先順序誰高
根據C/C++運算優先順序表,就可以知道:
3 & 取地址
7 << 或 >> 位移
10 & 位與
(上面的數字是優先順序)
因此,你例子里給出的 & 是位與操作,因此這個是先位移,然後再按位與。
F. C語言中 &&和‖誰優先順序更高
&& 的高
優先順序【高到低】:
第一級:
圓括弧【()】、下標運算符【[]】、分量回運算符的指向結構體答成員運算符【->】、結構體成員運算符【.】
第二級:
邏輯非運算符【!】、按位取反運算符【~】、自增自減運算符【++ --】、負號運算符【-】、類型轉換運算符【(類型)】、指針運算符和取地址運算符【*和&】、長度運算符【sizeof】
第三級:乘法運算符【*】、除法運算符【/】、取余運算符【%】
第四級:加法運算符【+】、減法運算符【-】
第五級:左移動運算符【<<】、右移動運算符【>>】
第六級:關系運算符【< > <= >= 】
第七級:等於運算符【==】、不等於運算符【!=】
第八級:按位與運算符【&】
第九級:按位異或運算符【^】
第十級:按位或運算符【|】
第十一級:邏輯與運算符【&&】
第十二級:邏輯或運算符【||】
第十三級:條件運算符【?:】
第十四級:賦值運算符【= += -= *= /= %= >>= <<.= &= |= ^=】
第十五級:逗號運算符【,】
G. 計算機C語言中邏輯運算符「與」「或」「非」優先順序是怎樣的
非的優先順序最高(它是一個單目操作符)
與的優先順序次之
或的優先順序最低
單目操作符的優先順序最高。
H. c語言中&&與||的優先順序
1,1,1,true
1賦值給c,c賦給b,b賦給a。
然後,第二個表達式的話結果肯定是布爾值,而有題目觀之,此表達式不為0,所以d為true
優先順序
++(--)>&&>||