c语言问题,懂点的人进。

来源:百度知道 编辑:UC知道 时间:2024/07/04 13:39:51
在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式。
其一般形式为:
表达式1,表达式2
其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。
【例3.19】
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,x=6
这结果怎么出来滴,为什么结果不是:y=10,x=6 指点一下

因为赋值语言的优先级更高些。
就是说这个语句是逗号语句,等价于
(y=(x=a+b)),(b+c); 就是先把a+b的和赋给x后再给y.所以y=x=6.
而不是赋值语句。你的理解错在理解成了:
y=((x=a+b),(b+c)); 这样理解就错误的把y算成10了。
这里注意一下优先级就行了,赋值号的优先级要高于逗号。

优先及 运算符 运算类型
15(最高) () [] - >
14 ! ~ ++ -- -*& sizeof * /% 单目运算
13 * / % 双目算术
12 + - 双目算术
11 << >> 移位运算
10 < <= > >= 关系运算
9 == ! = 关系运算
8 & 位运算
7 ^ 位运算
6 | 位运算
5 && 逻辑运算
4 || 逻辑运算
3 ?: 三目运算
2 = += -= *= /= %= &= ^= | = >>= <<= 双目运算
1 , 顺序运算

我也是刚学C的,在我看来这是个赋值语句,不象是逗号运算.有不对的地方请指点一下.