我有三个代码片段。这个:
1,7; //yes, that's all the code
编译没问题。这个:
double d = (1, 7);
也编译没问题。然而这个:
double d = 1, 7;
编译失败。 gcc-4.3.4 说
错误:在数字常量之前预期有不合格的 id
Visual C++ 10 说
错误 C2059:语法错误:“常量”
为什么会有这样的差异?为什么这三个都不用编译,
三者的效果相同吗?
在前两种情况下,语句使用 C++逗号运算符
在后一种情况下,逗号被用作变量分隔符,编译器希望您声明多个标识符;此处不使用逗号作为运算符。
最后一种情况类似于:
float x,y;
float a = 10, b = 20;
当你这样做时:
double d = 1, 7;
编译器需要变量标识符而不是数字常量。因此 7 在这里是非法的。
然而,当你这样做时:
double d = (1,7);
使用普通的逗号运算符:1 被求值并丢弃,而 7 被存储在 d 中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)