我想检查“*(get the of a pointer)和++”的运算符的优先级,我应该如何设计一个句子然后测试它?
char* s
*s++;
这不能测试 ++ 运算符,因为它在右边。
我想检查“*(get the of a pointer)和++”的运算符的优先级,我应该如何设计一个句子然后测试它?
char* s
*s++;
这不能测试 ++ 运算符,因为它在右边。
您没有指定,但从您的示例中,我假设您指的是后缀运算符 ++ 而不是前缀形式。在这种情况下,你的表达:
*s++;
是对运算符优先级的一个很好的测试,因为它可以解释为:
(*s)++; // -> increment the char pointed at by s
或者:
*(s++); // -> increment the pointer s itself
取决于哪个运算符绑定得更紧密(具有更高的优先级)。
事实上,C/C++ 中的规则是后缀运算符总是比前缀运算符绑定得更紧密,所以上面的第二种解释是正确的。
要实际查看程序中发生了哪些情况,您需要进一步设置和输出 - 特别是您需要先初始化s
以指向某个对象。
请说您是否需要后半部分的帮助。
您可以通过制作一个小程序然后检查输出来“测试”。
int main() {
char c[] = "hello";
char* s = c;
std::cout << *s++ << std::endl; // prints 'h'
std::cout << *s << std::endl; // prints 'e'
}