与和或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
优先级
++(--)>&&>||