两种赋值 结果不同。

来源:3-5 赋值运算符

李永东

2015-06-26 21:51

#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 

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


写回答 关注

3回答

  • onemoo
    2015-06-26 22:48:32
    已采纳
    int x, y = 10;

    相当于

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

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

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


    onemoo 回复李永东

    如果你需要所有变量都有初值,那最好分开定义,分别给初值,这样也比较直观,不容易写错。

    2015-06-27 13:27:03

    共 2 条回复 >

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

    好吧 自答。。。 

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

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

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

    李永东

    怎么删除这个。。。。

    2015-06-28 15:24:53

    共 1 条回复 >

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

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

    李永东

    刚看到回答 以为自己记错了, 但是 慕课网在线版的输出结果是 x=0,y=20 怎么得到这个结果的 可以暂且先不说, 但是 您知道为啥 两次输出结果不同 么 ? (谢谢捧场。)

    2015-06-26 22:05:11

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926209 学习 · 20797 问题

查看课程

相似问题