课后题的问题
#include <stdio.h>void main()
{
int a = 2, b = 4, c = 6, x, y;
y = (x = a + b), (b + c);
printf("y = %d,x = %d", y, x);
}
结果怎么是
y = 6 想= 6
不是说
y= 表达式1,表达式2,表达式3取最后一个值吗? 是因为赋值运算符= 的优先次序大于逗号运算符的级别。
所以 y = (x = a + b), (b + c);
会先赋值的。 你可以改为y =( (x = a + b), (b + c));这样就会先算逗号运算符再算赋值运算符了。 哦 谢谢啊 呵呵 新手的傻傻问题 呵呵我也是新手 才开始学 在今天之前我也没弄明白过这个问题,今天看视频时,看到小甲鱼老师在视频中有出现运算符优先级表。再一看到你的题目,就突然感到茅塞顿开,想明白了。 甲鱼兄啊,你的问题有人给你反映出来喽~~~{:3_61:} 甲鱼兄啊,你的问题有人给你反映出来喽~~~
578786647 发表于 2011-2-21 01:56 http://fishc.com/dz/images/common/back.gif
嘻嘻,是啊~我的错~ 哈哈,不错不错,总结一下,本来是多个表达式赋值,只考虑最右边的一个,八国,还要先考虑等号比逗号优先级别高哦,!!!!! 是因为赋值运算符= 的优先次序大于逗号运算符的级别。
页:
[1]