C++ 带指针的奇怪运算符

C++ 带指针的奇怪运算符,c++,pointers,operators,C++,Pointers,Operators,我在读代码的时候碰到了这个东西。我现在没有完整的上下文保存这行 cout<<(*--*++ptr+1)<< endl; 这个运算符是什么?它包含在标准中吗?它不是一个运算符,而是几个一元运算符的组合。它的解析方式如下: *(--(*(++ptr))) + 1 因此,ptr1首先递增,然后取消引用,然后该值递减,然后再次取消引用。它不是单个运算符,而是几个一元运算符的组合。它的解析方式如下: *(--(*(++ptr))) + 1 因此,ptr1首先递增,然后取消引用

我在读代码的时候碰到了这个东西。我现在没有完整的上下文保存这行

cout<<(*--*++ptr+1)<< endl;

这个运算符是什么?它包含在标准中吗?

它不是一个运算符,而是几个一元运算符的组合。它的解析方式如下:

*(--(*(++ptr))) + 1

因此,ptr1首先递增,然后取消引用,然后该值递减,然后再次取消引用。

它不是单个运算符,而是几个一元运算符的组合。它的解析方式如下:

*(--(*(++ptr))) + 1

因此,ptr1首先递增,然后取消引用,然后该值递减,然后再次取消引用。

括号使其更容易理解。[提示,如果您编写的代码与此类似]那么它是否等同于*ptr+1?@Ralph不,您的*s递减级别与递增级别不同。@Ralph:不,它根本不等同于此。这相当于先做++ptr-*ptr;然后计算**ptr+1。括号使其更容易理解。[提示,如果您编写的代码与此类似]那么它是否等同于*ptr+1?@Ralph不,您的*s递减级别与递增级别不同。@Ralph:不,它根本不等同于此。这相当于先做++ptr-*ptr;然后评估**ptr+1。答案就足够了。我想,这些类型的技巧是可以的,但应该在前面加上一条注释,说明操作打算做什么,也许还有一个简短的解释。这是真实的生产代码吗?这是一些编程难题中的真实代码。我是一个初学者,我怎么能自己制作呢?请提供完整的代码。ptr是如何初始化的?你应该不惜一切代价远离它!答案就足够了。我想,这些类型的技巧是可以的,但应该在前面加上一条注释,说明操作打算做什么,也许还有一个简短的解释。这是真实的生产代码吗?这是一些编程难题中的真实代码。我是一个初学者,我怎么能自己制作呢?请提供完整的代码。ptr是如何初始化的?你应该不惜一切代价远离它!