C三元 - 如果没有返回值

时间:2013-10-18 07:18:54

标签: c

我刚开始学习C编程。使用Java一段时间后的语言。

我目前正尝试以下列方式使用三元组:

  

(currIndex == 0)? return 1:currIndex - ;

我知道这不是传统的作业形式:

  

max = (a> b)?a:b

我正在尝试做什么?如果没有,原因是什么?

(我的动机是保持代码简短,因为这一行会在switch-case表达式中多次出现)

万分感谢。

3 个答案:

答案 0 :(得分:3)

如果如你所说的那样,你仍然会返回一个值,那么是的,这不会是一个问题,除了你实际上不能这样做的问题(return不允许在那里)。要解决它,使代码更容易理解,您可以这样做:

if (curindex == 0)
    return 1;

--curindex;

/* Rest of code */

在这种情况下不需要else,因为else部分是减少代码的其余部分,如果你不这样做,你将不会这样做来自函数的return

答案 1 :(得分:1)

为什么要在这里使用三元运算符? currIndex似乎是一个局部变量,即使你返回它也不会丢失任何东西:

if (!currIndex--)
    return 1;

答案 2 :(得分:1)

在C中,该问题的代码将无法编译:

(currIndex == 0) ? return 1 : currIndex--;

return语句不是可以嵌入到三元运算符中的表达式。

你可以写:

return (currIndex == 0) ? 1 : currIndex--;

尽管如果currIndex是一个全局变量(在函数外部定义;它可能是文件的本地变量,也可能是整个程序的全局变量),减量只会有意义。