【发布时间】:2019-03-21 15:43:22
【问题描述】:
我在理解 C++ 中的递增顺序时遇到了问题。
我知道增量是一元运算符,因此它们在括号之后从右到左。
我的问题是我们什么时候增加数量?
这是一个简单的代码:
#include <iostream>
using namespace std;
int main()
{
int a1;
int a(12),b(3);
a1=7+10%3-5;
b=a/b++;
cout<<a1<<"\t"<<b<<endl;
return 0;
}
在这里我得到 a=3 是对的,但是 b=5 ,我认为是 3,因为我们从右边开始并增加 1,然后 12/4 得到 3。
【问题讨论】:
-
b++在获得b的值之后 递增。++b会在获得b的值之前增加。 -
@UweKeim 我认为K&R 说
b++在计算完成后增加b,而不是在获得b的值之后。 -
感谢您的澄清,@Ayxan ????.
-
@UweKeim 我重新检查了这本书,它说“但是表达式
++n增加了n之前它的值被使用,而n++增加了n在它的值被使用之后。”这意味着我错了。很抱歉造成混乱 -
n++是n的原始值,用于表达式的评估。我会避免说 statement,因为x = 2 * 5 + (n++, n)恢复了预增量行为,因为在这种情况下n++is 表达式。