赋值运算符的优先级高于逗号运算符(int b=0;static c=3; a=c++,b++;中a=c++,b++;不是逗号运算符吗为什么是最后运算的是c的值而不是b的呢)

本文目录
- int b=0;static c=3; a=c++,b++;中a=c++,b++;不是逗号运算符吗为什么是最后运算的是c的值而不是b的呢
- C语言编程,变量赋值
- c语言求解释
- 假设变量a为整型,则执行a=3+5,a*4;printf(“% d\n“,a);后的输出结果是
- c语言赋值运算中哪种优先级最高
- C语言程序问题
- 设有如下程序段:int x=2002,y=2003;printf(“%d\n“,(x,y))
int b=0;static c=3; a=c++,b++;中a=c++,b++;不是逗号运算符吗为什么是最后运算的是c的值而不是b的呢
a=c++,b++;
因为赋值运算符的优先级高于逗号运算符。
所以,它等价于
(a=c++),b++;
而不是
a=(c++,b++);
要想得到b的结果,请加上后一种括号。
C语言编程,变量赋值
我来给出正解吧:
a)a=a+7
是赋值语句
正确
b)a=7+b+c,a++
这是一个赋值运算符和逗号运算符等组成的语句,因为赋值运算符的优先级高于逗号运算符,所以相当于(a=7+b+c),a++
而不是a=(7+b+c,a++)
c)int(12.3%4)
%不能出现小数,非法
d)a=a+7=c+b
赋值运算符的结合性是自右向左的,所以相当于两个语句
先a+7=c+b
再a=a+7
a+7不是个变量,不能作为被赋值的对象。
所以答案是a、b
c语言求解释
赋值运算符的优先级高于逗号表达式的优先级
因为z=x++,x++是后置加,z=x++,先计算z=x=1,然后x执行加1,此后z不再改变 ,其他同理。所以x=2,y=3, z=1
所以该表达式的值还是1
如果是z=(x++,y++,++y)就是你说的逗号运算符了
假设变量a为整型,则执行a=3+5,a*4;printf(“% d\n“,a);后的输出结果是
假设变量a为整型,则执行a=3+5,a*4;printf("%d\n",a);后的输出结果是8。
因为赋值运算符的优先级高于逗号运算符,所以它等价于:
(a=3+5),a*4;
c语言赋值运算中哪种优先级最高
c语言运算符优先级从高到低的顺序依次如下:
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。
优先级与求值顺序无关。如a+b && b*c,虽然*优先级最高,但这个表达式求值顺序是从左到右。
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
相同优先级中,按结合性进行结合。大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。
序列点
序列点是程序执行中的一个点,在这个点之前,前面的表达式的求值和副作用已经完成,而后面表达式的求值和副作用还没有发生。C 标准定义以下序列点:
(1)运算符&&;运算符||;逗号运算符,;条件运算符?:的第一个子表达式求值结束后。
(2)函数调用运算符()中对所有实参数完成求值之后。
(3)每个完整表达式结束时。完整表达式包括变量初始化表达式,表达式语句的表达式,return 语句的表达式,if 或 switch 语句中的控制表达式,while 或 do语句的控制表达式,for 语句的所有三个表达式。
(4)标准库函数返回之前,标准输入输出函数格式化转换说明符关联动作之后,标准查找函数和排序函数在调用比较函数之前和之后及参数传递之后。
由序列点的定义可知,与运算符&&;或运算符||;逗号运算符,;条件运算符?:等 4 个运算符的左操作数属于前一个序列点,右操作数属于后一个序列点,因此,这 4 个运算符的左操作数的求值要先于右操作数完成。
C语言程序问题
注意(z=x+ +),y+ +,+ +y;和z=(x+ +,y+ +,+ +y;)是不一样的。
这个题目和自增优先级没有关系,因为这个题目相当于(z=x+ +),y+ +,+ +y;
明白了么,因为赋值是比逗号优先级高的,所以先把x值赋值给z,然后x自增,y自增2次。
故结果答案为C
设有如下程序段:int x=2002,y=2003;printf(“%d\n“,(x,y))
选D,逗号表达式的一般形式为
表达式1,表达式2
逗号表达式的求解过程:先求解表达式1,在求解表达式2.
整个逗号表达式的值是表达式2的值。
例如:
a=3*5,a*4
赋值运算符的优先级别高于逗号运算符,,先求解a=3*5
得到a=15,然后求解a*4
,得到60.
整个逗号表达式的值为60。
告诉你这些是想让你知道表达式1也是有用的

更多文章:
form表单制作(为什么制作的form表单会在网页显示中多出一行)
2026年10月11日 09:10
teammate(teammate,company,partner)
2026年10月11日 06:10
javascript arraybuffer(javascript可以把base64编码转换成二进制代码吗求示例代码!)
2026年10月11日 04:00
text函数公式(excel中round和text函数的区别是什么)
2026年10月11日 03:50
google chrome打不开(chrome浏览器打不开怎么回事 浏览器打不开的处理方法)
2026年10月11日 02:00
websocket整合springboot(Springboot整合Websocket遇到的坑)
2026年10月11日 01:40
drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)
2026年10月10日 19:20
xor四位数怎么运算(单片机怎样用C语言实现4个数字间的异或)
2026年10月10日 17:50


