有一个程序:int a=1,b=1,c=1,d;d=a++||b++&&c++:请问运算后,abcd的值分别是多少? 我觉得与的优先级要大于或,结果应该是1 2 2 1可是在tc上的结果是2 1 1 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语言作者和员组成。
本回答被网友采纳1.基本表达式
2.后缀表达式
3.单目一元运算
4.强制类型表达式
5.乘除表达式
6.加减表达式
7.移位运算符
8.关系运算符
9.相等运算符
10.位与运算符
11.位异或运算符
12.位或运算符
13.逻辑与运算符
14.逻辑或运算符
15.三元条件运算符
16.赋值运算符
17.逗号运算符
综上,^是位异或运算符,<<是移位运算符,所以<<优先^