C++中的输出和误解

output and misunderstanding in C++

我想知道为什么输出是 (1),以及为什么在对变量 b 的第二次赋值中,表达式 (i+=2) 没有被计算。最后这个程序是怎么一步步执行的呢? 我还是初学者。

`

int i = 0;
bool t = true;
bool f = false,
    b;

b = (t && ((i++) == 0));
b = (f && (i += 2 > 0));

cout << i << endl;

`

因为 && 运算符 short-circuits 和 ffalse1 += 2 未被计算。

如果 && 个操作数是 true,则整个表达式只能是 true,因此无需计算 (i += 2 > 0)判断整个表达式的值为false。鉴于在这种情况下 不需要 计算第二个操作数,许多编程语言保证不会,包括 C 和 C++。

在布尔表达式中使用带有 side-effects 的操作数时要小心。