#include <stdio.h>
int main()
{
int x,y = 10;
//使用简单赋值语句实现x乘以2。
x=x*2 ;
//使用复合赋值语句实现y乘以2。
y*=2;
printf("x=%d\n", x);
printf("y=%d\n", y);
return 0;
}
在慕课网在线ide 输出结果是
x=0
y=20
原版的代码是
#include <stdio.h>
int main()
{
int x = 10;
int y = 10;
//使用简单赋值语句实现x乘以2。
x=x*2 ;
//使用复合赋值语句实现y乘以2。
y*=2;
printf("x=%d\n", x);
printf("y=%d\n", y);
return 0;
}
输出结果是
x=20
y=20
发生了什么 导致这两种结果的差异 呢 ?
int x, y = 10;
相当于
int x; // x未初始化 int y = 10;
C标准规定:函数中定义的变量(局部变量)未赋予初值的话,其值是不确定的。 只有全局变量会被默认初始化为0。
也就是说x的值完全是未定的,可能是0,也可能是任何值。 不同的平台、不同的编译器可能会有不同的结果,对此测试毫无意义。 而且编译器通常会给出“x未初始化”之类的警告。
好吧 自答。。。
慕课网 的 后台 出来。。。。
这个在线版的IDE 该换了。。。。
本人亲测,, windows 上,无问题。。。。。。
int x,y = 10; 结果是x=0, y=10