C++?for循环中带有continue运算符的运算符
我有一个方法如下所示:C++?for循环中带有continue运算符的运算符,c++,visual-studio,continue,C++,Visual Studio,Continue,我有一个方法如下所示: bool Perfect(int num) { int sum = 0; for (int i = 1; i < num; i++) { num%i == 0 ? sum += i : continue; } return sum == num ? true : false; } num%i == 0 ? sum += i 我会跳过迭代还是什么都不做 如果我这样做,编译器会报告如下错误: expected
bool Perfect(int num) {
int sum = 0;
for (int i = 1; i < num; i++)
{
num%i == 0 ? sum += i : continue;
}
return sum == num ? true : false;
}
num%i == 0 ? sum += i
我会跳过迭代还是什么都不做
如果我这样做,编译器会报告如下错误:
expected an expression
在这种情况下:
bool Perfect(int num) {
int sum = 0;
for (int i = 1; i < num; i++)
{
num%i == 0 ? sum += i : continue;
}
return sum == num ? true : false;
}
num%i == 0 ? sum += i
它说:
Expected a ':'
有什么方法可以继续使用吗?运算符或只是以某种方式避免大小写错误???C++和C都有语句和表达式请注意,赋值或函数调用是一个表达式,而表达式是语句。它们是不同的句法和语义事物
您可以编写代码,但这是一种奇怪的样式,因为在for循环中,语句简化为?:条件表达式:
当num%i为非零时,其计算结果为0,没有明显的副作用;顺便说一句,0的最后一次出现可能是1234或任何常量积分表达式
一些编程语言(尤其是Scheme、read)只有表达式而没有语句
三元数应用于表达式并给出一个表达式,因此不能用于语句
条件语句使用if关键字。在您的例子中,它更具可读性,因为您使用sum+=i只是为了它的副作用,而if语句在这里更容易理解
bool Perfect(int num) {
int sum = 0;
for (int i = 1; i < num; i++)
{
if(num % i == 0)
sum += i;
}
return sum == num;
}
使用if语句。不需要continue,因为sum+=i之后没有其他语句。不能以这种方式使用三元运算符。您通常会使用它根据表达式为真或假为变量赋值。例如
int j, i,
j = (i == 2) ? 5: 10;
如果i等于2,则j的值为5;如果i不等于2,则j的值为10 在这种情况下,不要强制使用三元组;这没有任何意义。只要使用if/else。另外,返回sum==num?真:假;应该只写为返回和==num@我只是在探究C++的可能性,这就是为什么我好奇是否有一个使用三元运算符的解决方案:TynRyes用于有条件地返回一个值。continue不会计算出任何有用的值。实验是好的,但是识别正确工作的正确工具也是好的。在for循环的末尾继续是特别无用的,因为循环无论如何都会继续。三元运算符没有什么实际用途,所以请关注更有用的内容;