San*_*. K 2 c++ if-statement vector
我写了以下代码.它给出了意想不到的结果!
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int> v;
if(0 < (v.size() - 1))
cout << "entered" << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我们打印v.size()
它打印0.但它仍然进入if条件!为什么这样??
Sto*_*ica 10
v.size()
有一个无符号的返回类型.从无符号0减去1会导致回绕到一些"非常大"的无符号数(这是模运算).
永远,0将小于一些"非常大"的数字.
使用标准容器并混合有符号/无符号索引/大小时,这是常见的问题.