为什么我的程序同时进入if语句和相应的else语句
Why is my program going into both an if statement AND its corresponding else statement?
在我的程序中,我有以下代码:
if(cameraName == L"AVT Prosilica GT2750") {
mCamera = new camera_avtcam_ex_t();
} else if(cameraName == L"QImaging Retiga 2000R\4000R") {
mCamera = new camera_qcam_ex_t();
}
当我设置了我的程序,使cameraName默认为L"AVT Prosilica GT2750"(我的调试器将显示这是它的值),它进入if语句并运行mCamera = new camera_avtcam_ex_t();
,但是当我步骤到下一个执行行时,我的调试器直接跳过行mCamera = new camera_qcam_ex_t();
并执行它。鉴于if/else语句的性质,这怎么可能发生呢?
您正在尝试调试一个发布版本
尝试调试"debug"构建。你应该看到你所期待的行为。当调试一个优化的构建时,代码行不一定与源代码"对齐"。据你所知,优化器决定最好同时执行这两个命令,如果不需要,就把其中一个丢弃。
注意-我并不是说优化器确实这样做了,我只是说这是可能的,你可能会看到接下来执行的是哪一行。优化器可以自由地对代码重新排序、展开循环、生成常量、删除变量、添加临时变量等等。
编辑-附加想法
当你深入到硬件层面时,事情就会重新排序。硬件可能会选择执行分支的两个方面,然后再确定应该执行哪一个,以便在需要时尽快准备好答案。它会这样做,即使这意味着放弃其他工作,因为这可能会获得更快的执行速度。
相关文章:
- 我的简单if-else语句是如何无法访问的代码
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- 我似乎对if/else的基本语句有问题:/
- 如果 else 语句不断循环
- C++ If/Else 语句被跳过
- 如果条件不相关,我应该更喜欢两个 if 语句而不是 if-else 语句吗?
- 如何将 if else 语句重写为 switch 语句
- 在 C++ 中的 if-else if- else 语句期间更改变量
- 为什么我的 if else 语句不起作用并从数组中输出正确的索引?
- 我的 If Else 语句无法在向量 (C++) 中提供最大值
- 如果 else 语句使用大写和小写字母
- 为什么无论输入如何,所有 if-else 语句都会打印?
- 多个'if'语句,不带'else'
- 嵌套的 else 语句 c++
- 为什么切换 if else 语句的顺序会导致错误?
- 如何使用 if else 语句
- if/else 语句输出由于加号或减号而未显示正确的消息
- if-else 语句仅按特定顺序工作,我不知道为什么
- "if else"被视为单个语句吗?
- 试图避免在 for 循环中出现 if-else 语句,但代码似乎有一些错误