我是C ++课程的评分员。由于缺乏练习,我对更高级概念的技能总体上非常缺乏,所以我不熟悉语言的细节。我的问题是关于一个代码块,在关于骰子卷的作业中有一个不寻常的行。
#include <iostream>
using namespace std;
int main()
{
int numSims = numSims % 12 == 0 || numSims > 1000;
//Other irrelevant code follows
}
我找不到任何说这是错误的语法。我不明白为什么一个学生想要这样做,据我所知这种说法不能执行。这里隐藏的秘密比我失踪了吗?
答案 0 :(得分:-1)
当评估右侧的表达式时,这将执行但未初始化的numSims值。最后,numSims将以0或1结束。
修改强>
考虑到以下评论中的所有讨论,这在技术上是未定义的行为,可能导致程序在某些硬件平台上崩溃。 (它也可能,但不太可能,它可以发射相量或反转中子流的极性 - 取决于你的硬件平台。)
在当今使用的许多系统上,程序将运行,并且未定义的行为(尝试使用存储在未初始化的numSims变量中的 indeterminate值)将导致numSims以任一结尾a 0或1。