0

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

我目前正在尝试通过以下方式使用三元 If:

(currIndex == 0) ? 返回 1:currIndex--;

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

最大值 = (a > b)?a:b

我正在尝试做的事情可能吗?如果不是,那是什么原因?

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

太感谢了。

4

3 回答 3

3

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

if (curindex == 0)
    return 1;

--curindex;

/* Rest of code */

else在这种情况下不需要 a ,因为这else部分是减量其余代码,如果您return从函数中将不会这样做。

于 2013-10-18T07:23:50.877 回答
1

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

if (!currIndex--)
    return 1;
于 2013-10-18T07:24:34.197 回答
1

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

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

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

你可以写:

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

尽管减量仅在是全局变量时才有意义currIndex(在函数外部定义;它可能是文件的本地变量或整个程序的全局变量)。

于 2013-10-18T07:34:15.293 回答