我想检查“*(获取指针)和++”的运算符的优先级, 我应该如何设计一个句子然后进行测试?
char* s
*s++;
这不能测试++运算符,因为它在右边。
答案 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'
}