如何写更短的这个“或”语句是否正确
How to write shorter this "or" statement and is it right?
fail = 0;
if (masivs[0][0]>0 | masivs[0][1]>0 | masivs[0][2]>0| masivs[0][3]>0 |masivs[0][4]>0| masivs[0][5]>0|masivs[0][6]>0| masivs[0][7]>0|masivs[0][8]>0|masivs[0][9]>0)
{
fail = 1;
}
else {
fail = 0;
}
我需要检查 0 行中是否是一些积极的元素,如果是,则需要将 fail 更改为 1。
使用std::any_of
(C++11) 清楚地表明您的意图。我假设你有一个int
数组。但是,在 C++14 中,您可以将下面的int
替换为 auto
,它适用于任何类型。
fail = std::any_of(
std::begin(masivs[0]), std::end(masivs[0]),
[](int i) {return i > 0;}
);
确保数组大小已知,以便std::begin
和std::end
实际上可以工作(即,数组实际上不是指针)。
对于完全早于 C++11 的解决方案,您可以使用 std::find_if
,如果您不想编写自己的谓词,则可以使用现已弃用的 std::bind2nd
和 std::greater
函子来绑定 0:
int *end = masivs[0] + 9;
fail = (std::find_if(masivs[0], end, std::bind2nd(std::greater<int>(), 0)) != end);
只需使用 for
循环:
fail = 0;
int i;
for(i = 0; i < 10; i++) {
if(masivs[0][i] > 0) {
fail = 1;
break;
}
}
使用 for 循环遍历要检查的行中的列。
相关文章:
- 此增量后语句是否会导致未定义的行为?
- 如果中的多个语句是否与多个 if 相同?
- 这些语句是否等效(静态变量、常量变量和泛型)
- (C++)for循环中的空初始语句是否保存所有编译器中变量的上一次初始化
- C++17 : "带初始值设定项的选择语句"是否损坏?
- 以分号结尾的 if 语句是否具有良好的编码习惯
- C++ sqlite3 如何知道 SQL 语句是否成功执行
- return 语句是否阻止递归堆栈继续
- 'new'语句是否可以在不引发异常的情况下失败?
- 类型定义语句是否相等
- if(0) 和 if(1) 语句是否优化
- 如何写更短的这个“或”语句是否正确
- 这些语句是否相同 if (x - y) {} vs. if (x !=y) {}
- Fortran 的参数语句是否与 C/C++ 的 #define 语句相似?
- 如果某个条件语句中的某些内容导致该条件语句不再为true/false,则该语句是否停止执行
- c++条件语句是否带有从条件表达式到语句的依赖关系?
- 返回语句是否被视为跳转指令
- C/C++ 中的 'if' 语句是否将操作数转换为整数?
- return语句是否导致执行跳出当前执行的函数
- C++十进制检查语句是否有错误