是否可以缩短此 if 语句
Is it possible to shorten this if statement?
>我只是想知道我是否可以使这个if语句的括号中的内容更简单。
if (augend[i]=='0' && partialSum[i]=='0' && carry=='0')
比如(augend[i] & partialsum[i] & carry == '0')
.我还在学习,所以我不太确定这样的事情是否可能。
-
不,"0"的数值不是
0
,但通常是48
(但这不是可移植的(,因此您的按位技巧将不起作用。 -
即使可以按位技巧,也不要这样做。保持代码原样,因为它清晰易懂。
你试图做的是过早的微优化,最终是一个坏主意。
封装:
bool zeros() {
return true;
}
template<class... chars>
bool zeros(char x, chars... lst) {
return x == '0' && zeros(lst...);
}
if (zeros(augend[i], partialSum[i], carry)){
//impl//
}
//lined up just for size comparison
if (augend[i]=='0' && partialSum[i]=='0' && carry=='0')
if (zeros(augend[i], partialSum[i], carry))
这更简短,并且随着您必须比较的参数越多而变得更短(因为您不需要每次都编写=='0'
(。
如果你需要它的任何字符...
bool equal(char match) {
return true;
}
template<class... chars>
bool equal(char match, char front, chars... lst) {
return match == front && equal(match, lst...);
}
不,这很短
如果这些是整数而不是字符(即 carry == 0 是你想要的(,那么你可以做
if (!augend[i] && !partialSum[i] && !carry)
由于我们不知道你在做什么,所以很难说。但是if (carry)
,如果你在做某种或算术,if(!carry)
感觉很自然。
你可以这样做:
if(augend[i]=='0' & partialSum[i]=='0' & carry=='0'){}
as == 具有更高的优先级,并将返回可以使用按位运算符的布尔值。
你可以做
if(!(augend[i]^'0'|partialSum[i]^'0'|carry^'0'))
这是让代码的读者(可能包括未来的你(想知道 *$#@ 是怎么回事的绝佳方法。
如果讽刺不清楚,请不要这样做。 (除非这是针对"代码高尔夫"比赛,在这种情况下,您可能会改进许多其他事情。 您的原始代码要好得多。
if (augend[i]==partialSum[i]==carry=='0')
或
(augend[i]==partialSum[i]==carry=='0') ? (if_true) : (if_false)
相关文章:
- Insert函数不适用于2 if语句C++
- If语句未被求值C++
- C++嵌套if语句,基本货币交换
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- If语句在c++中被忽略
- 比较if语句中的数组值和int值
- 以在Qt中的IF语句中设置时间延迟
- Craps游戏问题,忽略if语句
- c++:定义if语句中的模板
- C++嵌套的 If 语句中,它无法按预期工作
- 如果条件不相关,我应该更喜欢两个 if 语句而不是 if-else 语句吗?
- 需要有关此 if 语句的帮助
- 转换器练习:跳过 if 语句和 if 语句
- 避免在 C++ 中的 if 语句中递增
- 如果仍然不满足要求,如何使 if 语句重复?
- do while 循环中的 if 语句以 yes 或 no 结尾
- 为什么在此C++代码中触发此 if 语句?
- 如何基于平台在制作文件中制作if语句?
- 在 if 语句中使用 GetKeyState 时,它会跳过条件
- C++ If 语句,从其他语句重复