i = i ++的行为是否真的未定义?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (8)

可能重复: 任何人都可以解释这些未定义的行为(i = i ++ + ++ i,i = i ++等...)

根据c ++标准,

i = 3;
i = i++;

将导致未定义的行为。

如果它可以导致多个结果,我们使用术语“未定义的行为”。但是在这里,i无论评价的顺序如何,最终的价值都是4,所以这不应该被称为“未指明的行为”吗?

提问于
用户回答回答于

i =,和i ++都是修改i的副作用。

i ++并不意味着i仅在评估整个语句后递增,仅表示i的当前值已被读取。因此,赋值和增量可以按任何顺序发生。

用户回答回答于

不,我们不会使用术语“未定义的行为”,因为它只能导致不止一个算术结果。当行为限于不同的算术结果(或者更一般地,对于一些可预测的结果集)时,它通常被称为未指定的行为。

未定义的行为意味着完全不可预测和无限的后果,例如格式化计算机上的硬盘驱动器或只是让程序崩溃。并且i = i++未定义的行为。

你认为i在这种情况下应该是4 的想法并不清楚。在C ++语言中绝对没有任何东西可以让你得出这个结论。

所属标签

可能回答问题的人

  • 西风

    renzha.net · 站长 (已认证)

    9 粉丝1 提问5 回答
  • uncle_light

    5 粉丝518 提问3 回答
  • 学生

    2 粉丝477 提问3 回答
  • 军哥

    重庆雷驰信息技术有限公司 · 经理 (已认证)

    5 粉丝1 提问3 回答

扫码关注云+社区

领取腾讯云代金券