我有兴趣了解编译器如何解释语句......
项目类型是C++ IDE 是 XCode 3.2 64 位 操作系统为Mac OS X 10.6.8
注意:代码示例是一个无限循环。
在下面的代码示例或附图中。如果有的话,编译器在做什么。没有出现重大错误,也没有出现小错误(根据我当前的编译器设置)。最感兴趣的是了解 case 语句 C 中发生的事情:
bool nrContinue;
enum Task {
A,
B,
C,
D
};
nrContinue = 1;
Task nrTask = A;
while (nrContinue) {
switch (nrTask) {
case A:
cout << endl << "Processing task: " << A;
nrTask = B;
break;
case B:
cout << endl << "Processing task: " << B;
nrTask = C;
break;
case C:
cout << endl << "Processing task: " << C;
// --------------------------------------------------
// Below is the statement of my misunderstanding
D; // What is going on at this statement
break;
case D:
cout << endl << "Processing task: " << C;
nrContinue = 0;
break;
default:
cout << endl << "Default case was unexpected.";
nrContinue = 0;
break;
}
} // loop
最佳答案
一行(或更多)形式的代码
expression;
被称为表达式语句。表达式被计算,程序的状态根据表达式的副作用而改变。例如:
nrTask = C;
使程序计算表达式 nrTask = C
,它具有改变 nrTask
值的副作用。
D;
计算表达式 D
,它没有副作用,因此什么都不做。
该语言允许将任何表达式用作表达式语句的主体;然而,如果它没有效果,一个好的编译器应该发出警告,因为它几乎总是一个错误。如果您启用警告(-Wunused-value
仅用于该警告,或者更好的是 -Wall -Wextra
用于许多有用的警告),那么编译器应该指出您的错误像“声明无效”这样的警告。
关于c++ - 了解编译器 - 什么都不做的声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13842653/