晕了,常量竟然不能作为静态数组的大小?? int i=1; int j=(int)&i; int a[(int)&i]; 为什么(int)&i作为常量可以为全局变量j初始化,却不能作为静态数组的大小。
好奇怪啊,何解??? [解决办法]
你有两个误区,一是以为由常量表达式通过一定运算得出的结果也属于常量表达式,这个观念是错的。&i的结果是地址常量表达式这个没错,但是( int )&i的结果却非整数常量表达式,因为在C中(C++也类似,但有细微差别),显式转换产生的整数常量表达式只能由数值类型转换而来,何谓数值类型?就是整数类型和浮点类型,&i的结果是个指针,属于标量类型,但不是数值类型。即: