C++ 如何检查运算符优先级

C++ 如何检查运算符优先级,c++,operator-keyword,C++,Operator Keyword,我想检查“*(获取指针的值)和++”运算符的优先级, 我应该如何设计一个句子,然后测试它 char* s *s++; 这无法测试++运算符,因为它位于右侧。您没有指定,但从您的示例中,我假设您指的是后缀运算符+,而不是前缀形式。在这种情况下,您的表达式: *s++; 是对运算符优先级的良好测试,因为它可以解释为: (*s)++; // -> increment the char pointed at by s 或: 取决于哪个操作符绑定得更紧密(优先级更高) 事实上,C/C++

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

char* s
*s++;

这无法测试++运算符,因为它位于右侧。

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

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

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

取决于哪个操作符绑定得更紧密(优先级更高)

事实上,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'
}
intmain(){
字符c[]=“你好”;
char*s=c;

std::你可以通过在线查找来检查它吗?也许这是错误的。我认为may无法检查postfix++和*,因为postfix++总是在“表达式运行”之后生效。@user1279988:postfix++运算符返回的值确实是旧值(未更改)值,但这并不意味着运算符优先级无效。我的答案中的两个不同括号的值与表达式的值相同,这是对的(它们都简单地等于
*s
),但它们的副作用不同。也就是说,您可以在程序的以下几行中检测到差异。关键的区别在于++在任何一种情况下都应用于不同的事物-因此它是一个不同的对象,它被递增了…@user1279988:例如,您可以在之前输出
s
*s
e和之后,以查看哪些已更改。
int main() {
    char c[] = "hello";
    char* s = c;
    std::cout << *s++ << std::endl; // prints 'h'
    std::cout << *s << std::endl; // prints 'e'
}