c++ - 返回后增量

标签 c++

我认为这是一个非常简单的问题......我有一些这样的代码:

//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/

相关文章:

c++ - Boost Multiprecision 随机生成器种子错误

c++ - 我的 SFML 项目的主循环只发生一次。有人知道为什么吗?

c++ - 保证 char、wchar_t、char16_t、char32_t 的大小排序

c++ - 为什么 decltype 从内置类型的返回类型中删除 const?

c++ - 逐行散列文件时错误的 md5 散列值

c++ - lambda 函数的类型,使用 auto

c++ - 基类中的函数名称解析

c++ - 使用 QQuickView 或 QQmlApplicationEngine 在 ApplicationWindow 之间切换页面

c++ - 调用不通过空指针访问成员的非静态方法是否合法/定义明确的 C++?

c++ - 由于 undefined reference 导致 C++ 程序出错