问答详情
源自:3-5 赋值运算符

两种赋值 结果不同。

#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 

发生了什么 导致这两种结果的差异 呢 ?


提问者:李永东 2015-06-26 21:51

个回答

  • onemoo
    2015-06-26 22:48:32
    已采纳

    int x, y = 10;

    相当于

    int x; // x未初始化
    int y = 10;

    C标准规定:函数中定义的变量(局部变量)未赋予初值的话,其值是不确定的。 只有全局变量会被默认初始化为0。

    也就是说x的值完全是未定的,可能是0,也可能是任何值。  不同的平台、不同的编译器可能会有不同的结果,对此测试毫无意义。 而且编译器通常会给出“x未初始化”之类的警告。


  • 李永东
    2015-06-26 22:13:24

    好吧 自答。。。 

    慕课网 的  后台 出来。。。。

    这个在线版的IDE 该换了。。。。

    本人亲测,, windows 上,无问题。。。。。。

  • 藏红
    2015-06-26 21:59:40

    int x,y = 10;   结果是x=0, y=10