c语言中“与”和“或”的优先级是什么?
与>或 ,更细一点是:! ---> & ---> ^ ---> | ---> && ---> ||。C语言中的运算优先级和算数优先级一样,只要把运算符的优先级记住就可以了。
经过n遍的调试,证明:||和&&优先级相等,且都是从左往右运算;在出现||和&&的语句中,并不对a++进行运算,只判断它的初值。当然,这条语句结束后,涉及判断的表达式就会进行相应的运算(如:a++)。
在&&运算中,如果&&前面的逻辑值为0(如:令a=0;a++&&b++,此时,a还没有进行++运算,仍为0。但是在本语句结束后就自加1),则结束本语句;如果&&前面的逻辑值为1,则继续判断&&后面的值是否为1,如果为1,则继续判断后面的逻辑运算;如果为0,而结束本语句。
优先级
优先级与求值顺序无关。如a+b && b*c,虽然*优先级最高,但这个表达式求值顺序是从左到右。
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
相同优先级中,按结合性进行结合。大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。
基本的优先级需要记住:
指针最优,单目运算优于双目运算。如正负号。
先算术运算,后移位运算,最后位运算。请特别注意:1逻辑运算最后结合。
以上内容参考:百度百科-运算符优先级
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语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准。
C语言继续发展,在1982年,很多有识之士和美国国家标准协会为了使这个语言健康地发展下去,决定成立C标准委员会,建立C语言的标准。委员会由硬件厂商,编译器及其他软件工具生产商,软件设计师,顾问,学术界人士,C语言作者和应用程序员组成。
广告 您可能关注的内容 |