Jon*_*Mee 2 c++ conditional short-circuiting logical-operators control-flow
以下是一个可疑的最小,完整,可验证的示例.这不是关于如何改进此代码的问题.我想知道的是标准是否容许在条件之外使用短路运算符,如下所示main.
enum weekday {
SUNDAY,
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
WEEKDAY_SIZE
};
bool getWeekday(int index, weekday& result) {
result = static_cast<weekday>(index);
return index >= 0 && index < static_cast<int>(WEEKDAY_SIZE);
}
bool getName(weekday& index, string& result) {
switch (static_cast<weekday>(index)) {
case SUNDAY:
result = "Sunday";
break;
case MONDAY:
result = "Monday";
break;
case TUESDAY:
result = "Tuesday";
break;
case WEDNESDAY:
result = "Wednesday";
break;
case THURSDAY:
result = "Thursday";
break;
case FRIDAY:
result = "Friday";
break;
case SATURDAY:
result = "Saturday";
break;
default:
assert("Short Circut Failed");
return false;
}
return true;
}
int main() {
const int index = 0;
weekday Weekday;
string Name;
getWeekday(index, Weekday) && getName(Weekday, Name);
cout << Name << endl;
}
Run Code Online (Sandbox Code Playgroud)
这适用于Visual Studio 2015和gcc 5.1,无需断言.
宽恕编码风格不是标准的工作.
你的写作没有错 getWeekday(index, Weekday) && getName(Weekday, Name);
您的代码的读者将知道,getName(Weekday, Name)如果getWeekday(index, Weekday)求值,将不会调用false.
| 归档时间: |
|
| 查看次数: |
152 次 |
| 最近记录: |