这是为什么呢?
1.首先,我们需要知道,编译器不同,int型占的字节数也是不同的。这里涉及到概念问题。关于各种数据类型到底占多少位,网上的说法没有总结的说法,下面我个人总结一下,欢迎批评
(1)固定概念,一个字节由8 bits组成。
(2)固定概念,通常int型占一个字长,short型占半个字长,long型占一个字长(在32位编译器中)或两个字长
(3)32 bits编译器中,int型数据是一个字长,32位,也就是4个字节,16bits编译中,int型数据照样是一个字长,但变为了16位,也就是2个字节
2.那么为什么上述程序中,变量a和变量b的地址差为3,也就是12个字节呢?(我目前也不太清楚这里为什么是3)
那是因为这是在Debug模式下运行,调试模式,在int变量的前后各增加了4个字节,用于存储调试信息。如果改为release模式,则会变成4个字节了。
3.变量是存放在栈中,栈上地址从高向低增长。