【发布时间】:2013-07-21 19:05:58
【问题描述】:
可能和很多人一样,我输入了这个错字
int a = 0;
cout << a < " "; //note the '<'
然而,MSVC++ 编译器只是抛出了一个警告
警告 C4552: '
虽然我预计会出现编译错误。它确实是标准的投诉代码吗?是否发生任何使代码有效的隐式类型转换或重载?我也很困惑< 运算符是将字符串" " 与整数a 还是与cout << a 的结果进行比较
一个相关的 SO 帖子是 here。
【问题讨论】:
-
您使用的编译器接受指针和整数类型比较,但标准禁止这样做。必要时更新或更改编译器
-
@a.lasram 如果没有,“NULL”宏将如何工作?
-
@a.lasram 没有。你搞错了优先级。
-
@kfsone 完全不相关,
NULL是一种特殊情况,因为literal-0(但只有literal-0)可以隐式转换为指针。 -
NULL 没有什么特别之处,它是一个定义为 0 的宏。他针对 0 进行了测试。这就是 C++11 添加“nullptr”和“std::nullptr_t”的原因。
标签: c++ compiler-errors compiler-warnings