今天为大家介绍几个奇葩的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]。