【发布时间】:2019-04-14 07:29:12
【问题描述】:
三元运算符中的else部分是printf语句在代码中不起作用,语法是否正确??还是一些愚蠢的错误??
#include<stdio.h>
#define isNegative(x) x<0 ? 1 : 0
#define isPositive(x) isNegative(x) ? 0 : 1
#define isEven(x) x%2 ? 0 : 1
#define isOdd(x) isEven(x) ? 0 : 1
main(){
int n,ch;
do{
printf("Enter a number\n");
scanf("%d",&n);
printf("Choose an operation :\n 1.isEven\n 2.isOdd\n 3.isPositive\n 4.isNegative\n");
scanf("%d",&ch);
switch(ch){
case 1 :isEven(n) ? printf("Its even number\n") : printf("Its not an even number\n") ;
break;
case 2 :isOdd(n) ? printf("Its odd number\n") : printf("Its not an odd number\n") ;
break;
case 3 :isPositive(n) ? printf("Its a positive number\n") : printf("Its not a positive number\n");
break;
case 4 :isNegative(n) ? printf("Its a negative number\n") : printf("Its not a negative number\n");
break;
default : printf("Enter valid option\n");
break;
}
printf("Press 5 to continue or 6 to exit\n");
scanf("%d",&ch);
}while(ch!=6);
}
代码的逻辑是否正确? 头文件内容
【问题讨论】:
-
这可能会有所帮助 - stackoverflow.com/questions/5240789/…
-
“不工作”是一个或多或少值得的故障报告。请更具体。你得到了什么?你期望得到什么?
-
@alk 替换 else 的第二条语句不起作用......真正的条件有效,但不是假的......除了最后一个
-
为什么不只是
printf("It's %san even number\n", isEven(n) ? "" : "not ")?但在实践中,使用printf("It's an %s number\n", isEven(n) ? "even" : "odd")通常更有用
标签: c