【发布时间】:2020-03-30 23:46:18
【问题描述】:
代码
#include <stdio.h>
int main() {
int i;
for (i=1; i<=10; i++) {
(i % 2) ? printf("%d is odd\n", i) : printf("%d is even\n", i);
}
}
结果
1 is odd
2 is even
3 is odd
4 is even
5 is odd
6 is even
7 is odd
8 is even
9 is odd
10 is even
在上面的C程序中,为什么即使条件表达式只声明i%2而不是i%2!=0,它仍然可以正常工作?
【问题讨论】:
-
i%2是一个标量值表达式。在像您这样的表达式上下文中,对于真(非零)或假(零)来说,它隐含地相当大。 -
printf ("%d is %s\n", i, i % 2 ? "odd" : "even")也可以:) -
或者,
static const char *msg[] = {"even","odd"};在您的循环中,您可以执行类似printf("%d is %s\n", i, msg[i%2]);的操作,但现在我们已经超出了您的问题的范围。
标签: c if-statement conditional-statements conditional-operator