📜  C 程序的输出 | 15套

📅  最后修改于: 2022-05-13 01:56:11.038000             🧑  作者: Mango

C 程序的输出 | 15套

预测以下 C 程序的输出。
问题 1

C
#include
int main(void)
{
  int a = 1;
  int b = 0;
  b = ++a + ++a;
  printf("%d %d",a,b);
  getchar();
  return 0;
}


C
#include
 
int main()
{
  int a[] = {1, 2, 3, 4, 5, 6};
  int *ptr = (int*)(&a+1);
  printf("%d ", *(ptr-1) );
  getchar();
  return 0;
}


输出:3 6

说明:++ 优先于 + 并从右向左操作。因此,最右边的++a 给出a=2,而它左边的++a 给出a=3。现在,在评估时,b=3+3。在第二个++a之后,我们有a=3。因此 b=3+3=6 和 a=3。因此输出。
问题2

C

#include
 
int main()
{
  int a[] = {1, 2, 3, 4, 5, 6};
  int *ptr = (int*)(&a+1);
  printf("%d ", *(ptr-1) );
  getchar();
  return 0;
}