gpt4 book ai didi

c++ - 为什么在 C++ 中++++i 是常规的而 i++++ 不是常规的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:53:31 29 4
gpt4 key购买 nike

当我使用 i++++ 时出现编译错误:

for (int i=1;i<=10;i++++) {} //a.cpp:63: error: lvalue required as increment operand

int i = 0;
i++++; // a.cpp:65: error: lvalue required as increment operand

但是当我使用 ++++i 时,它正在工作。谁能解释一下为什么 ++++i 是常规的,而 i++++ 不是常规的?

谢谢。

最佳答案

因为 x 的类型是内置的基本类型,所以两个表达式都会调用未定义的行为,因为它们都试图修改相同对象两次两个序列点之间。

不要做任何一个。

阅读此常见问题解答:

Undefined behavior and sequence points


但是,如果 x 的类型是用户定义的类型,并且您已经为两个表达式重载了 operator++,那么两者都是明确定义的.

为此,请参阅本主题以了解解释和详细信息:

Undefined behavior and sequence points reloaded

关于c++ - 为什么在 C++ 中++++i 是常规的而 i++++ 不是常规的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5987482/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com