c - 得到意外的输出

标签 c arrays

谁能帮我理解以下代码的输出是 3 2 15 吗?

我期望输出为:2 2 15 因为

  • 首先元素 a[1]1 将被预递增并且 i 将被分配 2,
  • 然后 j 也将被分配 2 因为后增量已经完成,
  • 对于ma[i++] 应该是a[2]15 ,因为后递增已经完成并且 m 应该被分配 15

如果我错了,请帮助我。

#include<stdio.h>
int 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\n",i,j,m);
    return 0;
}

最佳答案

int a[5]={5,1,15,20,25};

a[1] 增加到 2,并将 i 设置为 2

i=++a[1]; 

j 设置为 a[1] (2),然后a[1] 增加到 3

j=a[1]++;

m 设置为 a[i](a[2] 或 15),然后 递增i 到 3

m=a[i++];

关于c - 得到意外的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27986497/

相关文章:

javascript - 如何按名称和列关联对象

javascript - 检查二维数组的递归函数

c - udp 套接字 - 绑定(bind)和连接成功,但发送不起作用

javascript - Emscripten - 如何为采用 float**、float** 和 unsigned long 的 C 函数定义 getFuncWrapper 签名?

C文本处理: Output Wrong Size

JavaScript 对象数字索引像数组一样排序

php - SimpleXML:将XML属性值添加到数组

C++ 从本地计算机获取 WMI 数组数据

c - pthread 启动例程返回一个整数数组

c - posix fork() & win32 CreateProcess() 之后的子进程名称是什么?