繁体   English   中英

为什么我在以下代码中打印3值?

[英]Why does i print a value of 3 in the following code?

以下代码的输出为: 3 2 15
我期待2 2 15
为什么是这样?

#include <stdio.h>

int main() {
    int a[5] = { 5, 1, 15, 20, 25 };
    i = ++a[1];
    j = a[1]++;
    m = a[i++];
    printf("%d %d %d", i, j, m);
    return 0;
}

增量/减量运算符实际上会更改对象的值,而不仅仅是返回结果值。 在行m=a[i++]; 你又增加了i

因为您将其递增两次:

i=++a[1];     // i = 2
j=a[1]++;
m=a[i++];     // i = 3
printf("%d %d %d",i,j,m);

我希望它能为您提供帮助。

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

#include <stdio.h>

int main() {
    int a[5] = { 5, 1, 15, 20, 25 };
    i = ++a[1];
    j = a[1]++;
    m = a[i++];
    printf("%d %d %d", i, j, m);
    return 0;
}

让我们逐步进行此操作。

  • a [1]是1

  • 我是++ 1就是... 2

  • m是a [i],即a [2],即... 15

在此语句之后,执行了i ++,因此

m = 15之后

我变成3

这些值使用printf打印

让我们逐步进行:

#include <stdio.h>

int main() {
    int a[5] = { 5, 1, 15, 20, 25 };
    i = ++a[1];  // a[1] is incremented, becomes 2, i gets this value 2
    j = a[1]++;  // j gets a[1] which is 2, then a[1] is incremented and becomes 3
    m = a[i++];  // m gets a[2] which is 15, i is incremented and becomes 3
    printf("%d %d %d", i, j, m);  // prints 3 2 15
    return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM