两个奇葩的C/C++问题

今天为大家介绍几个奇葩的C/C++问题。

1 大家看看下面的输出结果是什么呢?

  #include <stdio.h>

#include <stdlib.h>
 
void main(int j) {
  printf("%d
", j);
  (&main + (&exit - &main)*(j/1000))(j+1);
}
输出结果为:1 2...1000.
大家想清楚为什么了吗?其实在j为1<=j<1000的时候&main + (&exit - &main)*(j/1000)=&main,在j=1000时候,(&main + (&exit - &main)*(j/1000))(j+1);就为exit(1001)。
2 a[5]==5[a]?
a[5]相当于*(a+5),5[a]也相当于*(a+5),因此a[5]==5[a]。




原文地址:https://www.cnblogs.com/jacksu-tencent/p/3614847.html