c - 这个输出背后的过程是什么?

标签 c

当我注释掉语句2和3时,i的值为2,但是当我不注释时,i变成3。这是为什么?

#include <stdio.h>
int main()
{
  int a[5]={5,1,15,20,25};
  int i,j,k=1,m;
  i=++a[1];   //Statement 1               
  j=a[1]++;   //Statement 2
  m=a[i++];   //Statement 3

  printf("%d %d %d",i,j,m);
  return 0;
}

最佳答案

在语句 3 中,您的代码递增 i 的值:

m = a[i++];

如果您将其分成以下两行,则更容易注意到:

m = a[i];
i++;

注意:顺序很重要!由于这是后递增(i++,而不是 ++i),因此先使用 i 的值,然后再递增。

关于c - 这个输出背后的过程是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27094919/

相关文章:

c - 无与伦比的括号宏怪异

c - 十进制转二进制转换程序 "abort trap: 6"错误

c++ - 向 C 风格可变参数列表添加额外参数

c++ - 如何通过对代码进行基准测试来计算 std dev、quartile 等?

ios - 在 iOS 的 C 函数中使用 ARC 取消引用指针

在proteus上为atmega 1281配置外部时钟

Collat​​z 猜想代码 "bouncing"介于 13 和 19 之间

c - 程序无法将变量识别为 long int 或 unsigned int

c - 为什么我不能在 gdb 中将 printf 与临时结构的字符串成员一起使用

与其他 C 文件一起编译 CUDA