十七 括号表达式 最右为终值
先推断一个程序的结果:
int a[3][2]={(0,1),(2,3),(4,5)};
int *p=a[0];
printf("%d",p[0]);
问打印结果?
解析:花括号{}内是小括号(),应该先计算括号表达式的值。
括号表达式计算顺序是从左到右,最终以最右边表达式的值作为整个表达式终值。所以
(0,1) = 1
(2,3) = 3
(4,5) = 5
所以a[3][2]={1,3,5};
a[ ][0] a[ ][1]
a[0][ ] 1 3
a[1][ ] 5 未知
a[2][ ] 未知 未知
p[0]=a[0][0]=1。