c++ - 带有 size_t 的奇怪循环

标签 c++ for-loop size-t type-promotion

我没有使用 size_t 进入循环。为什么? 如果我使用 int 我进入循环,输出是:11, 11

int main()
{
   int j = 11; 
   for (size_t i = 11; i > - 1; --j, i -=12)
   {

       std::cout << i << ", " << j << std::endl; 

   }
   return 0;
}

最佳答案

size_t 通常是无符号值。在您的 for 循环条件中,您说的是 i > -1。由于 i 是无符号类型,-1 将转换为该类型,并将具有该类型的最大值。

由于促销,您有效地将 11(i 的初始值)与 size_t 的最大值进行比较,结果为 false,因此循环为从未进入。

关于c++ - 带有 size_t 的奇怪循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21135254/

相关文章:

c++ - 我不明白如何在 C++ 中使用 size_t

C++ self 执行标准 : size_t

c++ - 为什么不能将数字添加到关联容器的迭代器?

c++ - 迭代器或 reverse_iterator 的一个变量?

java - 类型转换 - foreach - java

python - 创建一个由从另一个列表中弹出的元素组成的列表 (Python)

c++ - "Efficiency"作为参数传递 size_t

c++ - 解决赋值构造函数 C++ 中的歧义

c++ - 类似 QML 的方法或编程语言?

c++ - MinGW + 提升 : undefined reference to `WSAStartup@8'