gpt4 book ai didi

c - 涉及带有后增量和前增量的数组值的意外输出

转载 作者:行者123 更新时间:2023-11-30 21:32:18 25 4
gpt4 key购买 nike

以下程序的输出不应该是 -

2 3 20

相反,它显示

3 2 15

谁能解释一下这背后的原因吗?

#include<stdio.h>
main()
{
int a[5] = {5,1,15,20,25};
int i,j,m;
i = ++a[1];
j = a[1]++;
m = a[i++];
printf("%d %d %d",i,j,m);
}

最佳答案

3 2 15

是正确的输出。

  1. i是 3,因为 ii = ++a[1]; 中变为 2进行预增量,然后在 m = a[i++]; 中进行后增量
  2. j是 2,因为 j = a[1]++; ,之后没有任何变化。
  3. m是 15 因为 m = a[i++]; i正在后递增,旧值 i (即 2 )用于索引和 i 上的后增量在评估=之后排序声明。
<小时/>

话虽如此,推荐签名main()int main(int argc, char *argv[])或者至少,int main(void) .

关于c - 涉及带有后增量和前增量的数组值的意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31518352/

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