柿子饼同学 发表于 2021-11-21 17:40:43

c++输出有问题

#include <iostream>
using namespace std;
int main()
{
      int a, b = 3;
      a += b;
      cout<< a << b <<endl;
      return 0;
}
代码如上 , 本来是想打印 63 的 , 结果出来 43 ...
我也不知道怎么回事{:10_245:}

jackz007 发表于 2021-11-21 17:52:48

本帖最后由 jackz007 于 2021-11-21 17:54 编辑

      不为 a 赋初值就肯定能得到结果 43?
#include <iostream>
using namespace std;
int main()
{
      int a = 1 , b = 3;
      a += b;
      cout<< a << b <<endl;
      return 0;
}

柿子饼同学 发表于 2021-11-21 17:57:42

本帖最后由 柿子饼同学 于 2021-11-21 17:59 编辑

jackz007 发表于 2021-11-21 17:52
不为 a 赋初值就肯定能得到结果 43?

啊, 可是它自己出来 43 的
所以 int a, b = 3; 只能给 b 赋值为 3 , a 管不了嘛{:10_277:}

jackz007 发表于 2021-11-21 18:01:53

柿子饼同学 发表于 2021-11-21 17:57
啊, 可是它自己出来 43 的
所以 int a, b = 3; 只能给 b 赋值为 3 , a 管不了嘛

      a += b
      是
      a = a + b
      的简写形式,所以,a 必须要先赋值,然后才可以使用,否则,结果不确定。

柿子饼同学 发表于 2021-11-21 18:06:08

jackz007 发表于 2021-11-21 18:01


      的简写形式,所以,a 必须要先赋值,然后才可以使用,否则,结果不确定。

所以只能写成        int a, b;
        a = b = 3;

jackz007 发表于 2021-11-21 18:21:53

本帖最后由 jackz007 于 2021-11-21 18:23 编辑

柿子饼同学 发表于 2021-11-21 18:06
所以只能写成


         你这样写 a 会被初始化为 3,结果就是 63,只有把 a 初始化成 1 才能得到 43。如果这个还有疑问,那我就不和你讨论了!!!

柿子饼同学 发表于 2021-11-21 18:25:35

jackz007 发表于 2021-11-21 18:21
你这样写 a 会被初始化为 3,结果就是 63,只有把 a 初始化成 1 才能得到 43。如果这个还有疑 ...

懂了懂了 , 谢谢
页: [1]
查看完整版本: c++输出有问题