Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++?for循环中带有continue运算符的运算符_C++_Visual Studio_Continue - Fatal编程技术网

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循环的末尾继续是特别无用的,因为循环无论如何都会继续。三元运算符没有什么实际用途,所以请关注更有用的内容;