c - 在三元条件中使用 Printf() 和 return 之间的区别 (? :) operator

标签 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;

我想可能是因为如果 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/

相关文章:

c - TCP 绑定(bind)没有进程绑定(bind)的先验知识

c - 多播不工作

c - 数组声明方括号内的星号在C中是什么意思

Perl - 三元运算符中的增量值

C格式字符串问题

c - 在 C 中制作 shell 时防止箭头键输出像 ^[[A 这样的原始字符

c++ - 运算符的初始化列表和 RHS

javascript - "condition"(? :) operator work in JavaScript as in C?

objective-c - &(&符号)和&&或|之间的区别(管道)和 ||在 Objective-C 中?

c++ - 如何使用中间规则操作在 Bison 中创建短路评估?