-1

说我写:

   int a=1,b=2;
   a<b ? return 1 : return 2 ;  // Case 1

它给出编译错误说“错误:'return'之前的预期主表达式”

但是当我写:

   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 成功。CASE 2 与 CASE 1 有什么不同?是控制转移吗?请解释 !

我的编译器 - C 4.3.2 Ubuntu 11.10

4

1 回答 1

4
printf("1\n")

是一个表达式

但是return是一个声明。

C 条件运算符的所有操作数都需要 C 表达式。

您可以使用:

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

return MIN(a, b);

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

于 2013-06-19T18:32:11.627 回答