我认为这是一个非常简单的问题......我有一些这样的代码:
//head is somewhere initialized with 0 (int head=0;)
char testclass::read() {
return data[head];
++head;
}
当我尝试运行它时,我创建了一个循环。将其更改为:
char testclass::read() {
++head;
return data[head];
}
运行没有问题,除了 head 增加到快速。那有什么问题呢?
最佳答案
试试这个。
return data[head++];
在你的第一个解决方案 ++head
之后返回的是死代码。从不运行,它可能已经在编译时被丢弃了。在您的第二个解决方案中,head
在您返回时已经递增。太早了。
后递增 ++
运算符有时会在计算 head++
表达式之后和分号之前递增值。但是确切的时间是不确定的并且依赖于编译器。因此,切勿在同一语句中使用多个 x++
表达式。
关于c++ - 返回后增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18814800/