【问题标题】:how does post increment works in c? [duplicate]后增量如何在c中工作? [复制]
【发布时间】:2017-12-20 04:44:39
【问题描述】:

这是一个非常简单的c程序:

int main()
{
    int i = 22;
    printf("%d %d %d",i,i++,i); 
    return 0;
}

结果是:

23 22 23

这里的后增量究竟是如何工作的?

【问题讨论】:

  • 欢迎来到未定义的行为!这是一片充满神秘和痛苦的美妙土地。更多:stackoverflow.com/questions/4176328/…
  • 好点。 OP 想要 C。C 和 C++ 之间的规则有些不同,尤其是在 C++11 之后。

标签: c printf post-increment


【解决方案1】:

在这种情况下您无法正确测试。

函数参数的参数评估顺序未定义,因此您将获得与平台相关的结果。

i++ 的实际工作方式是首先返回旧值,然后递增,但这是一个糟糕的测试。

【讨论】:

    【解决方案2】:

    根据你得到的结果判断,i++ 被评估并返回预先增加的值。然后将i的值、i++的返回值、i的值传递给print函数。

    这不是您应该依赖的东西,因为您可能会在不同的编译器上得到不同的答案,甚至使用不同的优化设置。与其他答案一样,参数评估的顺序是未定义的行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 2020-10-30
      • 2015-04-13
      • 2014-10-13
      • 2012-02-29
      相关资源
      最近更新 更多