Hiii all
我今天制作了这个节目
int main()
{
int a = 1,2; /* Shows error */
int b = (1,2); /* No error */
}
为什么第一个显示错误而第二个没有? Just()使一个程序编译。为什么呢?
- 思鲁提
答案 0 :(得分:9)
int a = 1,2;
2
被视为变量名,不能以数字开头,因此错误。
int b = (1,2);
comma operator从左到右评估操作数并返回列表中的最后一个表达式,即2
答案 1 :(得分:6)
在括号内,语言指定将出现表达式。在这种情况下(b
),逗号表示来自C的逗号运算符。
如果没有括号,该语言指定变量声明以逗号分隔。在a
的示例中,编译器(解析器)期待其他变量声明。
答案 2 :(得分:3)
原因是在您的第一个语句int a = 1,2;
中,逗号未被解析为序列运算符。它是声明列表的一部分,并尝试实例化一个名为2
的整数变量,该变量是该语言所不允许的。
第二个语句int b = (1,2);
中的括号强制将逗号解析为序列运算符。
答案 3 :(得分:0)
(1,2)
评估列表中的最后一个表达式,即2
。
另一个例子:(a,b,c)
将评估为c
。
如果您想使用小数,请使用float / double类型并使用点作为小数符号:double d = 1.2;
答案 4 :(得分:0)
他们一个拳头都没有意义。
但后来我记得for循环中的多个操作。例如:
for (a=1,b=2; a<1; a++)
知道 1 是一个有效的表达式,并且这些表达式是有效的语言元素,我的结论是(1,2)评估1(但对它没有任何作用) ),然后评估2并返回2.
最后:
b = (1,2);
与以前一样评估1和2,返回2,并将其分配给b。