【发布时间】:2017-07-22 23:06:54
【问题描述】:
在 C 语言中,如何在使用两种不同数据类型的 printf 语句中使用条件运算符?我想让下面的代码在每次遇到偶数时不打印任何内容而不是零。我还希望能够在遇到某些数字时打印一个字符串。
我尝试了类型转换 (char)list[i] 但这会导致类型转换不兼容,因为 printf 语句需要一个整数。
只打印奇数
int fail = 0;
int list[] = {1, 2, 3, -1, 4};
int size = sizeof(list) / sizeof(list[0]);
for(int i = 0; i < size; i++) {
if(list[i] == -1) {
break;
}
printf("%d\n", (list[i] % 2 == 0) ? (i) : (fail));
}
【问题讨论】:
-
为什么不使用
if语句在适当的printf语句之间进行选择? -
您可以使用相同的
?运算符在“%s”和“%d”之间进行选择作为格式说明符字符串... -
会怎么样?运算符在格式说明符内工作?
-
类似
printf((list[i] % 2 == 0) ? "%s\n" : "%d\n",... -
@bruceg:最终会评估条件两次,不是吗?这只是
(list[i]%2?printf("%d\n", i);printf("%s\n", "odd");的一小步:)
标签: c printf conditional-operator