【发布时间】:2017-01-19 02:53:13
【问题描述】:
为什么true==151 被认为是不安全的操作而true==true,实际上是持有相同的表达式,却不是。此外,为什么true==151 永远不会是真的,不像true&&151?
cout<<(true==151); //0 and it gives compiler warning C4806
cout<<(true==true); //1 no warning
if(true==151)cout<<"1"; //"0" and warning again
if(true&&151)cout<<"1"; //1 no warning
if(151)cout<<"1"; //1
警告 C4806 本身
'==':不安全的操作:没有提升为类型'int'的'bool'类型的值可以等于给定的常量
【问题讨论】:
-
包含整个消息而不仅仅是其代码是个好主意。信不信由你,但我们中的许多人还没有将所有 Microsoft 的错误代码都记入记忆中。
-
不同的类型。真的是黄色吗?
-
@ZDF 真理有颜色吗?
-
@molbdnilo :) 黄色是真的吗?
标签: c++ compiler-warnings