在我的c++程序中,我发现assert()调用abort()的情况类似于下面的代码片段: int a = -1;
assert(a < b); 作为一个人类,我可以断定-1绝对小于5,不管一个是整数,另一个是无符号整数。为什么编译器不能? 我已经找到了解决方案,那就是这个断言是无意义的,因为无符号总是正的(我有点忘记
在此代码示例中使用int而不是std::size_t时for(int i = 0; i < v.size(); i++) std::warning: comparison between signed and unsigned integer expressions1 2 3 4
我还经常注意到,在我正在从事的项目中显然,这些程序在比较有符号整数和<
如果我有这个密码:unsigned int B;相比之下,编译器会抱怨混合类型。如果我是这样投的话:这是否指示编译器插入代码将A从int转换为无符号int?或者它只是告诉编译器不要担心,忽略类型错配?更新:如果这是不安全的(如下面指出的),我应该如何处理这个比较?(为了以后的比较,不将int的内容分配给无符号int也是不安全的)
更新:哇,有一些不同的答