我有时想向学生们展示在使用之前必须初始化局部变量.但在某些情况下,它们在没有初始化的情况下得到零的初始值.所以我的学生不相信我.例如,在此代码中.
#include <stdio.h>
int main(void){
int sum;
sum += 5;
printf("%d", sum);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有时输出为5.为了演示未将变量sum初始化为零的未定义行为,我正在寻找一个例子.
指向标准是好的.但我理解你希望向你的学生展示一个榜样.我不确定最好的方法; 但是为了增加查看未定义行为的机会,可以声明编译器无法轻易优化的多个变量.
#include <stdio.h>
void main(){
int sum1;
int sum2;
int sum3;
int sum4;
int sum5;
int sum6;
int sum7;
int sum8;
int sum9;
int sum=sum1+sum2+sum3+sum4+sum5+sum6+sum7+sum8+sum9;
printf("%d\n",sum);
}
Run Code Online (Sandbox Code Playgroud)
在我的系统上; 最近的Ubuntu,最近的GCC在每次运行时产生不正确的结果,而你的原始示例总是产生5.但是我不能为你的系统做任何保证.