Teh*_*tGR 213 c++ if-statement
我一直在思考一些初学者的错误,最后我得到了if
陈述中的错误。我对此扩展了一些代码:
int i = 0;
if (i = 1 && i == 0) {
std::cout << i;
}
Run Code Online (Sandbox Code Playgroud)
我已经看到if
语句返回真实的,它cout
的i
作为1
。如果在if语句中i
分配1
了if,为什么i == 0
返回true
?
Nat*_*ica 387
这与运算符优先级有关。
if (i = 1 && i == 0)
Run Code Online (Sandbox Code Playgroud)
不是
if ((i = 1) && (i == 0))
Run Code Online (Sandbox Code Playgroud)
因为&&
和==
都比拥有更高的优先级=
。真正起作用的是
if (i = (1 && (i == 0)))
Run Code Online (Sandbox Code Playgroud)
将的结果分配1 && (i == 0)
给i
。所以,如果i
在开始0
然后i == 0
是true
,那么1 && true
是true
(或1
),然后i
被设置为1
。然后,由于1
为true,请输入if块并打印您分配给的值i
。
小智 16
假设您的代码实际上如下所示:
#include <iostream>
using namespace std;
int main() {
int i = 0;
if (i = 1 && i == 0) {
cout << i;
}
}
Run Code Online (Sandbox Code Playgroud)
然后这样:
if (i = 1 && i == 0) {
Run Code Online (Sandbox Code Playgroud)
评估为
if (i = (1 && i == 0)) {
Run Code Online (Sandbox Code Playgroud)
并i
设置为1
。