一个法官用老法律判案,必然荒唐。
C语言教程中,存在许多类似的问题,因为它们参考的还是ANSI C(通常叫C89)。
现在有C99和C11,怎么办?
例子:变量声明不再必须放在前面;
例子:定义数组[元素个数]必须是可转换为整型的、大于0的编译时常量的表达式。
void arrayBasic(void){
int arr [ 5 ]={1,2,3,4,5};//定义并初始化
int sum=0;
for(int i=0;i
sum +=arr[i];
printf("arr[%d]=%d ",i,arr[i]);
}
printf("\nsum of arr= %d\n",sum);
//定义时[元素个数]必须是可转换为整型的、大于0的编译时常量。
int a2[1+2*3];//常量表达式
//a2 = {1,2,3}; //Invalid expression
int a3[(int)4.6];
int a4[Size];//符号常量
const int size=10;
int a5[size];//命名常量
int n =8;
int a6[n];//C99标准,变长数组
//int b1[0];//an invalid array size
//int b2[-2];
int b3[2.3];//不知道那个标准
int b4[n+1];
//初始化
int arr3[5]={[2]=3};
//int arr4[]={1,2,3,4,5};
for(int i=0;i<5;i++){
printf("arr[%d]=%d ",i,arr3[i]);
}
printf("\n");
}