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

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

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

  #include <stdio.h>

#include <stdlib.h>   void main(int j) { printf("%d\n", 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]。




你可能感兴趣的:(c/c++)