Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 无法使用while()始终为true?_C_While Loop - Fatal编程技术网

C 无法使用while()始终为true?

C 无法使用while()始终为true?,c,while-loop,C,While Loop,基本上,我正在试图找到速度,以及我的CPU能用C计算多少 这就是我要做的 #include <stdio.h> int main(){ int i = 100; while(1==1){ i *= i; printf("[i] : %d\n", i); } return 0; } #包括 int main(){ int i=100; 而(1==1){ i*=i; printf(“[i]:%d\n”,i); } 返回0

基本上,我正在试图找到速度,以及我的CPU能用C计算多少

这就是我要做的

#include <stdio.h>

int main(){
    int i = 100;
    while(1==1){
        i *= i;
        printf("[i] : %d\n", i);
    }
    return 0;
}
#包括
int main(){
int i=100;
而(1==1){
i*=i;
printf(“[i]:%d\n”,i);
}
返回0;
}
但是有了上面的代码,程序永远不会编译/启动,并且在开始时就卡住了,它甚至会让程序说没有响应

我使用的是code::block,在控制台上从未看到任何输出


非常感谢您的回复。

您的代码或多或少都能正常工作:

输出可能是这样的:(//是我的注释,实际上不是输出的一部分)

int
overflow给出了未定义的行为,您平台上的结果可能不同

试试这个稍微修改过的程序版本,它只执行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;
}
#包括
int main(){
int i=100;
对于(int count=0;count<10;count++)
{
i*=i;
printf(“[i]:%d\n”,i);
}
返回0;
}

尝试将
int i
更改为
volatile int i
。IIRC非易失性内存上的while-true循环可以被编译器安全地删除。高度相关:它在这里“工作”,但由于它本身是坏的,所以很难定义这意味着什么,但有输出。你的程序没有响应,因为它在你无休止的循环中忙碌。您的程序无法用于查找任何类型的速度(例如,打印输出比执行简单乘法慢许多数量级),这样的乘法将溢出并导致未定义的行为。你应该告诉我们你在什么样的环境中运行这个程序,如果你正在使用的话,你是否在控制台窗口或IDE的输出窗口中看到任何输出,以及你真正想用你的程序实现什么。顺便说一句,你不需要
1==1
来获得一个“真”值,您可以单独使用
1
,因为除0之外的任何内容都被视为“true”
#include <stdio.h>

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

  return 0;
}