gpt4 book ai didi

c - 双后增量的结果 - 在 if 语句及其主体中

转载 作者:行者123 更新时间:2023-12-02 01:22:20 25 4
gpt4 key购买 nike

谁能解释一下为什么这一行短代码会返回 1?

int i = 0;
if(i++) i++;
printf("%d", i);

我的意思是当检查 if 语句时 i 必须递增,否则结果不会是 1。但是当它递增时应该再次递增,结果是 2。

更好的是,为什么这行代码的结果是 2?

int i = 0;
if(++i || i++) i++;

还有这个

int i = 0;
if(++i && i++) i++;

返回 3.

最佳答案

  • 代码行 if(i++) 在递增之前检查 i 的值。因此检查失败,因为 i=0 并且在检查之后,i 将递增,然后离开 if 条件使其等于 1。
  • 但是 if(++i || i++) 通过了,因为 ++i 在检查条件之前被求值,条件被求值为 1 并且条件为真然后 i++ 结果为 2。
  • 此外,由于++i 将为 1,而 i++ 也仍为 1,因为 i 将在其递增之前首先使用。所以 1 && 1 为真,然后在离开条件之前,i 将递增到 2,并且 if 下面的行将被评估为 3,并且 i 的新值将为 3。

关于c - 双后增量的结果 - 在 if 语句及其主体中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39237273/

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