int a;scanf("%d",&a);int b;b+=a;编译报错,但是int b放到scanf()之前可以:int a;int b;scanf("%d",&a);b+=a;编译没问题。
测试过了不是变量没有初始化的问题:int a=1;putchar(' ');int b=1;也不行环境win7+vs2010
收起
在第一个代码片段中,变量b没有明确初始化,即没有为其设置初值。因此,在对其调用 += 操作符之前,该变量的值可能是任意的,包括未定义的值。这是一种不好的编程习惯,且可能导致程序出现运行时错误或产生不稳定的结果。编译器会发出警告或错误提示,以帮助开发人员避免此类问题。
在第二个代码片段中,变量b先被显式初始化为0,因此在对其使用+=操作符之前已经有了明确定义的值。这消除了上述问题并使得代码可以正常编译执行。
因此,为了避免这种类型的错误,请始终对变量进行明确的初始化(赋初值),或者先在使用它们之前将其设置为具有明确定义的值
报告相同问题?