C ++逻辑语句

时间:2016-03-10 00:15:58

标签: c++ logical-operators

我是C ++课程的评分员。由于缺乏练习,我对更高级概念的技能总体上非常缺乏,所以我不熟悉语言的细节。我的问题是关于一个代码块,在关于骰子卷的作业中有一个不寻常的行。

#include <iostream>

using namespace std;

int main()
{
   int numSims = numSims % 12 == 0 || numSims > 1000;
   //Other irrelevant code follows
}

我找不到任何说这是错误的语法。我不明白为什么一个学生想要这样做,据我所知这种说法不能执行。这里隐藏的秘密比我失踪了吗?

1 个答案:

答案 0 :(得分:-1)

当评估右侧的表达式时,这将执行但未初始化的numSims值。最后,numSims将以0或1结束。

修改

考虑到以下评论中的所有讨论,这在技术上是未定义的行为,可能导致程序在某些硬件平台上崩溃。 (它也可能,但不太可能,它可以发射相量或反转中子流的极性 - 取决于你的硬件平台。)

在当今使用的许多系统上,程序将运行,并且未定义的行为(尝试使用存储在未初始化的numSims变量中的 indeterminate值)将导致numSims以任一结尾a 0或1。