我很好奇小端,我知道计算机几乎都有小端方法.
所以,我通过一个程序进行了调查,来源如下.
int main(){
int flag = 31337;
char c[10] = "abcde";
int flag2 = 31337;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我通过gdb看到堆栈时,
我注意到有0x00007a69 0x00007a69 ...... ...... ...... .... ... 0x62610000 0x00656463 ......
所以,我有两个问题.
一方面,
如何能够char c[10]在旗帜下的价值?
我预计在堆栈顶部有flag2的值,在flag2下有char c [10]的值,在char c [10]下有flag的值.
像这样
7a69
"abcde"
7a69
Run Code Online (Sandbox Code Playgroud)
第二,
我预计价值会以小端的方式存储.
结果,"abcde"的值存储为"6564636261"
但是,31337的值不是通过little-endian存储的.
那只是'7a69'.我以为它应该是'697a'
为什么整数类型不符合little-endian?