【发布时间】:2016-09-02 13:44:32
【问题描述】:
如果我使用input.size() - 1 作为 for 循环条件,程序将打印“进入循环”。
std::string input;
input = {""};
int i = 0;
for (; i < input.size() - 1; ++i)
{
cout << "Entered the loop" << endl;
}
但是,如果我将 input.size() -1 的值传递给整数 (checksize):
std::string input;
input = {""};
int checksize = input.size() - 1;
int i = 0;
for (; i < checksize; ++i)
{
cout << "Entered the loop" << endl;
}
那么程序就不会进入循环,也不会打印“进入循环”
我想知道为什么会这样?看来这两段代码对我来说是一样的。
【问题讨论】:
-
没有编译器警告?
-
大多数编译器默认关闭有符号无符号警告,它会产生很多误报。一些编译器会在第二个示例中警告超出范围的赋值
-
这就是为什么要对用于数学的数字进行签名。
标签: c++ for-loop size unsigned unsigned-integer