无法使用while()始终为真?

时间:2018-11-05 14:22:09

标签: c while-loop

基本上,我试图找到速度以及我的CPU在C语言中可以计算多远。

这是我想做的事

mse

但是使用上面的代码,该程序永远不会编译/启动并在开始时卡住,甚至使程序说无响应

我正在使用code :: block,并且在控制台上从未看到任何输出。

非常感谢所有回复。

1 个答案:

答案 0 :(得分:1)

您的代码或多或少按预期工作:

输出可能是这样的:(//是我的评论,而不是输出的一部分)

[i] : 10000             // 100 * 100
[i] : 100000000         // 10000 * 10000
[i] : 1874919424        // 100000000 * 100000000 (int overflow)
[i] : 0                 // 1874919424 * 1874919424 (int overflow resulting in 0)
[i] : 0                 // from now on you only get 0, because 0 * 0 = 0
[i] : 0
[i] : 0
[i] : 0
[i] : 0
[i] : 0

int溢出提供了不确定的行为,并且您平台上的结果可能有所不同。

尝试对程序进行此稍作修改的版本,它仅执行10个循环。

#include <stdio.h>

int main() {
  int i = 100;
  for (int count = 0; count < 10; count++)
  {
    i *= i;
    printf("[i] : %d\n", i);
  }

  return 0;
}