Joh*_*ing 0 c++ debugging visual-studio-2012
我正在编写一个简单的代码来按顺序迭代打印二叉树,但我偶然发现了这个奇怪的调试步骤:

图像没有以任何方式进行photoshopped或修改,"locals"窗口显示两个指针都有不同的值,但在将它们与自身进行比较并且与NULL进行比较时,相等性返回true并且"Wat ??" 被打印出来,怎么样?
我错过了什么吗?
如果我把它重写为
if(pointer1 == NULL && pointer2 == NULL)
cout << "This won't be printed";
Run Code Online (Sandbox Code Playgroud)
它工作正常
And*_*owl 10
等式比较运算符(operator ==)是一个与左侧相关联的二元运算符.因此,你的条件:
pointer1 == pointer2 == NULL
变为:
(pointer1 == pointer2) == NULL,成为:
true == NULL如果(pointer1 == pointer2); 要么
false == NULL如果(pointer1 != pointer2).
由于NULL转换为布尔值false,此条件将求值为trueif且仅当if pointer1 != pointer2.
如您所见,这与以下内容非常不同:
(pointer1 == NULL && pointer2 == NULL)
Run Code Online (Sandbox Code Playgroud)
评估true当且仅当两者pointer1都不pointer2是NULL.
| 归档时间: |
|
| 查看次数: |
1729 次 |
| 最近记录: |