这个运算符在C++中是做什么用的?

3

: 在 C++ 中是一个分隔符,用于定义类的成员函数、数据成员和基类列表。 与 ? : 不同,: 没有独立的作用,不能单独使用作为运算符。 例如下面的代码:

    //  Extracting the coefficients and exponents as numbers
    int expon[21] = { 0 };
    int coeff[21] = { 0 };
    for (int i = 0; i < monoms; ++i)
    {
        int monomSize = monomStr[i].size();
        for (int j = 0; j < monomSize; ++j)
        {
            if (monomStr[i][j] == '^')
            {
                expon[i] = stoi(monomStr[i].substr(j + 1, monomSize - j));
                coeff[i] = stod(monomStr[i].substr(0, j));
                break;
            }
        }
    }
    //  Looking for the max of exponents    
    int maxExponent = 0;
    for (int k : expon)                            // <---- **** this colon  ****
        if (k >= maxExponent) maxExponent = k;

    //  Generating the monomials of the null polynomial having 21ree = maxEponent
    std::string newMonom[21];

不,这是一个基于范围的for循环。它通过从开头到结尾遍历数组expon并将k设置为expon的每个元素。 - john
如果你指的是 for (int k : expon),那么它就是范围 for。 - WhozCraig
这个回答解决了你的问题吗?C语言中每个冒号的用法 - XXX_fam_XXX
请见:range-for 循环。 - Azeem
@XXX_fam_XXX你引用了一个关于[tag: C]的回答。C++增加了一些冒号的用法(例如构造函数中初始化列表的开头,或者OP所问的范围循环),这些用法在C中是不存在的。 - Scheff's Cat
2个回答

7
重要的是要认识到“运算符”和仅仅作为标点符号的语法之间的区别。运算符对表达式进行操作,以执行生成新表达式的某种效果。";"从不是运算符;它只是指定语句或声明何时结束的语法。"+"是一个运算符;它作用于两个表达式来产生一个新的表达式。
有些符号在某些地方可以是运算符,而在其他地方则不能。"<"是一个运算符……除非它前面的东西是一个模板名称或关键字"template"。在这种情况下,它引入了一组由闭合的">"界定的模板参数/参数。
":"从不是运算符(即使在"?:"中,它只是在三元表达式中分隔两个术语的分隔符);它只是在一些语法片段中起到某种作用的语法。在基于范围的for语句中,它将循环将生成的变量的声明与将进行生成的范围表达式分开。它本可以是一个关键字,但C++似乎对添加新关键字有点过敏,更喜欢在可能的情况下使用标点符号。

3
< p > ?: 语法称为三目运算符,有时也称为条件运算符

: 语法称为基于范围的循环

至于两者之间的区别,条件运算符是 if 语句的一种简写形式。基于范围的循环是(你可能猜到了)循环的一种简写形式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接