1:结果按从右到左的顺序计算,++i的值同最后那个++i值。
结果如下:
root@ubuntu:/home/jhw/whj/17-2-4# vim 1.c
root@ubuntu:/home/jhw/whj/17-2-4# ./1
2,1,0
7,5,7,3
2:其实,这是VC对变量存储的一个特殊处理。为了提高CPU的存储速度,VC对一些变量的起始地址做了“对齐”处理。在默认情况下,VC规定各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数。起始给字符型a分配空间,偏移初始位置为0,是字符型占用字节1的倍数,之后给短整型b分配地址,偏移量为1,不是2的倍数,电脑自动填充一个字节,然后再给b分配两个字节。4是1的倍数,但由于同类型a分配了2个字节(1+1),c也分配2个字节。最后1+1+2+2=6。
root@ubuntu:/home/jhw/whj/17-2-4# vim 2.c
root@ubuntu:/home/jhw/whj/17-2-4# ./2
6