使用Printf()和Ternary Conditional(?:)运算符返回之间的区别

时间:2013-06-19 18:30:48

标签: c operators ternary-operator

说我写:

   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

1 个答案:

答案 0 :(得分:4)

printf("1\n")

是一个表达式

但是return是一个声明。

C条件运算符需要C表达式用于其所有操作数。

你可以使用:

#define MIN(a, b)  ((a) < (b) ? (a) : (b))

return MIN(a, b);

如果您的目标是返回整数的最小值。