1

我想检查“*(get the of a pointer)和++”的运算符的优先级,我应该如何设计一个句子然后测试它?

char* s
*s++;

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

4

2 回答 2

2

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

*s++;

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

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

或者:

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

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

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

要实际查看程序中发生了哪些情况,您需要进一步设置和输出 - 特别是您需要先初始化s以指向某个对象。

请说您是否需要后半部分的帮助。

于 2012-05-16T04:15:19.507 回答
1

您可以通过制作一个小程序然后检查输出来“测试”。

int main() {
    char c[] = "hello";
    char* s = c;
    std::cout << *s++ << std::endl; // prints 'h'
    std::cout << *s << std::endl; // prints 'e'
}
于 2012-05-16T04:18:01.350 回答