说我写:
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;
我认为可能是因为如果返回1没有“;”结束他的陈述。
但只有案例2成功。 CASE 2与CASE 1的不同之处是什么?控制转移? 请解释一下!
我的编译器 - C 4.3.2 Ubuntu 11.10
答案 0 :(得分:4)
printf("1\n")
是一个表达式
但是return
是一个声明。
C条件运算符需要C表达式用于其所有操作数。
你可以使用:
#define MIN(a, b) ((a) < (b) ? (a) : (b))
return MIN(a, b);
如果您的目标是返回整数的最小值。