【发布时间】:2019-04-04 13:27:03
【问题描述】:
有没有更好的方法通过消除C语言中if语句中的重复条件来编写以下代码?
while (n < 0) {
printf("Enter a positive integer: ");
scanf("%d", &n);
if (n < 0) {
printf("Error: please enter a positive integer\n");
}
}
谢谢。
【问题讨论】:
-
“更好”是什么意思?更安全?快点?更具可读性?还有,
n的类型是什么? -
检查
scanf的返回值会更好,一方面。 -
n >= 0可以在while循环之前使用吗?如果没有,你可以把它变成一个“无限”循环,并在if块内添加一个break。 -
n 是一个整数。 “更好”是指消除 if 语句中的重复条件。
-
开启优化后,一个体面的编译器应该优化掉重复的条件,所以这可能不值得担心。消除重复条件的唯一其他方法是跳出无限循环。
标签: c if-statement while-loop conditional-statements