【发布时间】:2019-09-04 00:04:55
【问题描述】:
在测试程序中,v的大小为2。由于2大于-1,我认为应该进入while循环和“!”应该无限打印。但是,while 循环被跳过。这是为什么?我在 VS 2017 和 Ideone 中测试了代码。
#include <iostream>
#include <vector>
int main(){
std::vector<std::pair<int,float>> v = {{1,2.0},{2,2.0}};
std::cout << v.size();
while(v.size() > -1){
std::cout << "!";
}
}
【问题讨论】:
-
当我编译提供的代码时,我的编译器警告比较总是错误的,并且 int 被转换为 unsigned long。我强烈建议您启用编译器的警告,以提高这些易于执行的错误的可见性。
-
@Eljay 已启用,但没有警告
-
您的编译器不能特别启用 C4287 警告,否则您会看到警告。
-
如果它没有警告这总是错误的,那么它至少应该警告你有符号/无符号不匹配。