C++操作太混乱?
C++ operation too confusing?
这个操作我好像看不懂。
以下代码的输出是什么?
我试过解释为什么 b 有两个不同的值,一个是 b=1+2,另一个是 b=2,因为 a++ 应该等于 a=1+a ,那么 cout 要求 ++b,哪个应该它应该等于 b=2-1 或 b=3-1?
int a=3;
int b=2;
b=a++;
cout<<++b;
我知道这个问题的答案是 4。但我想不通。
why b has two different values
b
没有两个不同的值。 b
、a
以及其他所有内容在任何给定时间始终具有一个值。它在不同时间可能有不同的值,但在给定时间它始终只有一个值。
因为a
是3,那么:
b=a++;
将b
设置为3,因为post-increment操作在表达式中使用a
的值后修改了a
的值。
cout<<++b;
这会输出4,因为预自增操作在表达式中使用b
之前修改了它的值。由于 b
以 3
开始,它会递增到 4,然后在表达式中使用。
But i can't get my head around it.
发生这种情况时,您可以尝试简化 statements/expressions。
由于使用了post自增运算符,
b = a++;
相当于:
b = a;
a = a+1;
由于使用了前置自增运算符,
cout<<++b;
相当于:
b = b+1;
cout << b;
希望现在有意义。
这个操作我好像看不懂。 以下代码的输出是什么? 我试过解释为什么 b 有两个不同的值,一个是 b=1+2,另一个是 b=2,因为 a++ 应该等于 a=1+a ,那么 cout 要求 ++b,哪个应该它应该等于 b=2-1 或 b=3-1?
int a=3;
int b=2;
b=a++;
cout<<++b;
我知道这个问题的答案是 4。但我想不通。
why b has two different values
b
没有两个不同的值。 b
、a
以及其他所有内容在任何给定时间始终具有一个值。它在不同时间可能有不同的值,但在给定时间它始终只有一个值。
因为a
是3,那么:
b=a++;
将b
设置为3,因为post-increment操作在表达式中使用a
的值后修改了a
的值。
cout<<++b;
这会输出4,因为预自增操作在表达式中使用b
之前修改了它的值。由于 b
以 3
开始,它会递增到 4,然后在表达式中使用。
But i can't get my head around it.
发生这种情况时,您可以尝试简化 statements/expressions。
由于使用了post自增运算符,
b = a++;
相当于:
b = a;
a = a+1;
由于使用了前置自增运算符,
cout<<++b;
相当于:
b = b+1;
cout << b;
希望现在有意义。