C 无法使用while()始终为true?
基本上,我正在试图找到速度,以及我的CPU能用C计算多少 这就是我要做的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
#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;
}