Gam*_*der 2 c++ if-statement short-circuiting
if (1 == 1 == 1 == 1 == 1)
std::cout << "right";
Run Code Online (Sandbox Code Playgroud)
上面的代码显示“正确”。
if (-1 == -1)
std::cout << "right";
Run Code Online (Sandbox Code Playgroud)
上面的代码也显示“正确”。
if (-1 == -1 == -1)
std::cout << "right";
Run Code Online (Sandbox Code Playgroud)
上面的代码什么也没显示。(这是因为if statement我猜这不是真的?)
我想知道为什么会发生这种奇怪的事情。
因为-1等于-1并且无论我重复多少次(据我所知),该语句始终为真。
条件从左到右计算,因此以下条件语句
if (-1 == -1 == -1)
std::cout << "right";
Run Code Online (Sandbox Code Playgroud)
相当于
if (true == -1)//since -1 === -1
std::cout << "right";
Run Code Online (Sandbox Code Playgroud)
相当于
if (1 == -1) // true is casted to 1
std::cout << "right";
Run Code Online (Sandbox Code Playgroud)
相当于
if (false)
std::cout << "right";
Run Code Online (Sandbox Code Playgroud)
所以语句std::cout << "right";不执行是正常的,你什么也得不到。
| 归档时间: |
|
| 查看次数: |
195 次 |
| 最近记录: |