为什么C循环增量的结果是随机的
作为C语言初学者,我编写了一个循环演示程序。 但结果总是随机的,我想知道原因 代码:为什么C循环增量的结果是随机的,c,C,作为C语言初学者,我编写了一个循环演示程序。 但结果总是随机的,我想知道原因 代码: #包括 int main(){ int-num; 而(1000000>num){ num++; } printf(“num%d\n”,num); 返回0; } 结果: gcc main.c-o main >/主要 编号324399570 >/主要 数字166920658 >/主要 编号354193874 gcc版本:稳定的9.2.0(瓶装)因为 int num; 不等于0。 我也在C++中找到了; 编译时
#包括
int main(){
int-num;
而(1000000>num){
num++;
}
printf(“num%d\n”,num);
返回0;
}
结果:
gcc main.c-o main
>/主要
编号324399570
>/主要
数字166920658
>/主要
编号354193874
gcc版本:稳定的9.2.0(瓶装)因为
int num;
不等于0。
我也在C++中找到了; 编译时应该有一个关于使用未初始化变量的警告。将其更改为:
#包括
int main(){
int num=0;
而(1000000>num){
num++;
}
printf(“num%d\n”,num);
返回0;
}
替换int num代码>与int num=0代码>
因为您应该在使用前初始化变量,否则该变量将具有垃圾值。您不初始化num
;你会得到一个准随机的起点。在循环之前打印它,看看为什么会出现废话。试试:intnum=0代码>它不是随机的,它是任意的。num
的值可以是任何值。您不能假设它是0或不是。例如,一致性实现可以始终将其设置为42。@KeithThompson或格式化硬盘驱动器,或永远运行,只要您是正确的,并且我在编译时没有收到任何警告。你知道什么gcc选项会让gcc提示这样的错误吗?@Joanner使用-Wall
获取警告。如果希望警告导致生成失败,请添加-Werror
。