[英]Why does the if statement "if(1)" give error in Java but it holds true in C++?
[英]Comma instead of semicolon, Why does this statement not give syntax error in C++?
#include <iostream>
using namespace std;
int main() {
// your code goes here
int a = 10;
printf("\n a = %d", a),int(3);
return 0;
}
这段代码在C ++( http://ideone.com/RSWrxf )中运行良好,但是相同的printf
行在C中不起作用。为什么它在C++
? 我对两个语句和C / C ++编译差异之间允许的逗号感到困惑。
int(3)
在C ++中工作的原因是因为它是一个功能强制转换 。 这在C中不受支持,这就是它失败的原因。
正如保罗- [R已经解释,本声明C ++,因为工作,
(逗号操作)简单地忽略了表达的左边的返回值,
(但并执行它)。
所以在C ++中,行printf("\\na = %d", a),int(3);
评估如下:
printf("\\na = %d", a)
。 它的结果被丢弃了。 int
,但由于它未分配给变量,因此该语句无效并被丢弃。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.