我刚开始学习C prog。使用Java一段时间后的语言。
我目前正在尝试通过以下方式使用三元 If:
(currIndex == 0) ? 返回 1:currIndex--;
我知道这不是 传统的作业形式:
最大值 = (a > b)?a:b
我正在尝试做的事情可能吗?如果不是,那是什么原因?
(我的动机是保持代码简短,因为这一行将在 switch-case 表达式中出现多次)
太感谢了。
我刚开始学习C prog。使用Java一段时间后的语言。
我目前正在尝试通过以下方式使用三元 If:
(currIndex == 0) ? 返回 1:currIndex--;
我知道这不是 传统的作业形式:
最大值 = (a > b)?a:b
我正在尝试做的事情可能吗?如果不是,那是什么原因?
(我的动机是保持代码简短,因为这一行将在 switch-case 表达式中出现多次)
太感谢了。
如果,如您所说,无论如何您都返回一个值,那么是的,这不会成为问题,除了您实际上不能那样做的问题(return
那里不允许这样做)。为了解决这个问题,并使代码更容易理解,你可以这样做:
if (curindex == 0)
return 1;
--curindex;
/* Rest of code */
else
在这种情况下不需要 a ,因为这else
部分是减量和其余代码,如果您return
从函数中将不会这样做。
为什么要在这里使用三元运算符?currIndex
似乎是一个局部变量,即使你返回,你也不会丢失任何东西:
if (!currIndex--)
return 1;
在 C 中,问题中的这段代码将无法编译:
(currIndex == 0) ? return 1 : currIndex--;
该return
语句不是可以像这样嵌入到三元运算符中的表达式。
你可以写:
return (currIndex == 0) ? 1 : currIndex--;
尽管减量仅在是全局变量时才有意义currIndex
(在函数外部定义;它可能是文件的本地变量或整个程序的全局变量)。