在返回语句中嵌套条件运算符
Nesting conditional operators in a return statement
因此,我设置了一个代码,该代码可以找到用户输入和51之间差异的幅度(绝对值(。如果用户的输入大于51,则结果将三倍。不复杂。为了最大程度地减少代码本身,我提出了这个。
// Compare and determine the correct output based on program's
// paramters:
//
// - find absolute value of input - 51
// - if input > 51 then multiply result by 3
//-----------------------------------------------------------
int calcDiff(int x) {
const int base = 51;
int result = x - base;
return x > base ? 3*result : (result < 0 ? ~result + 1 : result);
}
所以问题是:
这合适吗?我知道它有效,但我更加奇怪它是否是不良的习惯,有一天能大大咬我的后方。这是公正的意见,还是大小不喜欢使用scanf
或gets
?有殴打死马的表情符号吗?因为我想使用它。
-
return
语句中的嵌套条件没有错 -
~result + 1
不好。您正在尝试否定result
。正确的方法就是-result
。~result + 1
依赖于两者的补体表示,这是无处不在的,但是这种表达是奇怪和不必要的。 -
您不需要
(result < 0 ? ~result + 1 : result)
。仅当x > base
为false时,才能评估此表达式,在这种情况下result
必须小于或等于零,并且您要返回-result
,因为该表达式处理小于零的情况(返回-result
(和等于零情况(返回0
,与result
为零时与-result
相同(。
因此return
语句可以写:
return x > base ? 3*result : -result;
或:
return result > 0 ? 3*result : -result;
相关文章:
- 重载嵌套结构/类的流插入运算符
- C++中具有嵌套条件的 X 模式
- 瓦尔格林德报告在 =带有嵌套shared_ptrs的运算符上的读取错误
- 为什么我需要三个嵌套的大括号来调用赋值运算符,将const引用到二维数组
- 用于返回嵌套类类型的作用域解析运算符
- 模板化类的嵌套类中的友元运算符
- 在结构的嵌套映射上链接运算符 []
- C++:不能使运算符<<成为模板嵌套类的好友
- 在返回语句中嵌套条件运算符
- 如果满足嵌套条件,则计算结果未显示结果C
- C++ 如何定义嵌套类内的运算符
- 如何在C++中使用嵌套三元运算符
- 铛.嵌套模板的二进制运算符重载
- 如何为模板嵌套类编写可交换的重载算术运算符?
- C++ 为什么运算符>会中断嵌套的运算符()调用?
- 嵌套智能指针运算符>
- C++ 中的嵌套重载运算符->()
- C++ 嵌套条件运算符循环
- C++嵌套的条件运算符计算顺序
- 嵌套条件在forloop在matlab中,如c++