如何检查运算符优先级

时间:2012-05-16 04:08:21

标签: c++ operator-keyword

我想检查“*(获取指针)和++”的运算符的优先级, 我应该如何设计一个句子然后进行测试?

char* s
*s++;

这不能测试++运算符,因为它在右边。

2 个答案:

答案 0 :(得分:2)

您没有指定,但是从您的示例中我假设您指的是 postfix 运算符++而不是前缀表单。在这种情况下,你的表达式:

*s++;

是对运算符优先级的良好测试,因为它可以解释为:

(*s)++;    // -> increment the char pointed at by s

或:

*(s++);    // -> increment the pointer s itself

取决于哪个运算符绑定得更紧密(具有更高的优先级)。

事实上,C / C ++中的规则是后缀运算符总是比前缀运算符更紧密地绑定,所以上面的第二个解释是正确的。

要在程序中实际查看,您需要进行一些进一步的设置和输出 - 特别是您需要初始化s以指向某些内容。

请说明您是否需要这方面的帮助。

答案 1 :(得分:1)

你可以"测试"通过制作迷你程序然后检查输出。

int main() {
    char c[] = "hello";
    char* s = c;
    std::cout << *s++ << std::endl; // prints 'h'
    std::cout << *s << std::endl; // prints 'e'
}