假设我写的是:
int a=1,b=2;
a<b ? return 1 : return 2 ; // Case 1
它给出了编译错误,说“错误:‘返回’之前预期的主要表达式”
但是当我写的时候:
int a=1,b=2;
a<b ? printf("1\n") : printf("2\n"); // Case 2
这将成功编译并按预期给出输出。
即使我尝试过这个:
a<b ? printf("1\n"): return 2;
我想可能是因为如果 return 1 没有“;”结束他的声明。
但只有情况2成功。案例 2 与案例 1 有什么不同?是控制权转移吗? 请解释一下!
我的编译器 - C 4.3.2 Ubuntu 11.10
最佳答案
printf("1\n")
是一个表达式
但是return
是一个语句。
C 条件运算符的所有操作数都需要 C 表达式。
您可以使用:
#define MIN(a, b) ((a) < (b) ? (a) : (b))
return MIN(a, b);
如果您的目标是返回整数的最小值。
关于c - 在三元条件中使用 Printf() 和 return 之间的区别 (? :) operator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17198692/