我读过逗号运算符用于分配表达式,并将正确的表达式提供给左值。
但是为什么这个程序在不使用括号的情况下将左表达式分配给左值呢?我正在使用 Turbo C 编译器。
int b=2;
int a;
a=(b+2,b*5); // prints 10 as expected
a=b+2,b*5; // prints 4 when not using parenthesis
还有以下作品:
int a =(b+2,b*5);
但这会产生错误:
int a =b+2,b*5; // Error
我不明白为什么。
因为优先级为,
运算符低于 of=
一、这个...
a=b+2,b*5;
...实际上会被评估为...
a = b + 2;
b * 5;
With int i = b + 2, b * 5;
有点不同,因为逗号在声明语句中具有不同的含义,将不同的声明彼此分隔开。考虑一下:
int a = 3, b = 4;
这里仍然有逗号,但现在它分隔两个变量声明赋值。这就是编译器尝试处理示例中该行的方式 - 但无法从中获取任何含义b * 5
行(既不是赋值也不是声明)。
Now, int a = (b + 2, b * 5)
不同的是:你assign值为b + 2, b * 5
变量的表达式a
类型的int
。第一个子表达式被丢弃,只剩下b * 5
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)