C++ c++;计算赋值运算符(if语句)
考虑以下几点C++ c++;计算赋值运算符(if语句),c++,parsing,if-statement,evaluation,C++,Parsing,If Statement,Evaluation,考虑以下几点 int main() { int a = 8; int b = 10; while (true) { if (a /= 2 && b < 12) { b++; std::cout << b << std::endl; } else break; } return 0; } 这与C++如何评估语句有
int main() {
int a = 8;
int b = 10;
while (true) {
if (a /= 2 && b < 12) {
b++;
std::cout << b << std::endl;
}
else break;
}
return 0;
}
<>这与C++如何评估语句有关吗?
如果评估不是问题:
我知道这一点
a = (a/2 && b<12)
a=(a/2&&bif(a/=2&&b<12)
同:
if (a /= (2 && b < 12))
if(a/=(2&&b<12))
因此:
- 对
2
进行求值,在操作数的上下文中将其转换为true
,&
。这不会触发短路求值,因此我们继续
b<12
,在您所说的情况下,它是false
2&&b<12
的计算结果总体上为false
a/=2&&b<12
在这里相当于a/=false
,这相当于a/=0
“我无法在java中尝试此操作,因为java不允许以相同的方式将整数表示为布尔值”在
C++
中,任何不同于0
的整数的计算结果都是true
,因此在Java
@中模拟这种行为并不是什么大问题。我不确定Java是否会以同样的方式对其进行评估,因此我不想得出任何结论ns试图把这个例子强加于java@HolyBlackCat啊,是的,这是真的。任何类型的赋值都有下一个最低的运算符。你可能想添加它作为答案。
if (a /= 2 && b < 12)
if (a /= (2 && b < 12))