【发布时间】:2021-07-16 10:22:20
【问题描述】:
如果我用 C 编写以下代码:
int n;
n = 2864434397;
int i;
i = &n; //I know there will be a warning, it's ok
由于 little endian 约定,我的堆栈上的变量 n 将是,例如:
0xffffd12c: 0xdd
0xffffd12d: 0xcc
0xffffd12e: 0xbb
0xffffd12f: 0xaa
然后,如果我查看变量 i 的值,我看到了 i = 0xffffd12c。
这意味着程序会以这种方式读取0xffffd12c和以下三个地址的值:
n == 0xAABBCCDD == [value of 0xffffd12f | value of 0xffffd12e | value of 0xffffd12d | value of 0xffffd12c]
我说的对吗?
【问题讨论】:
-
I know there will be a warning, it's ok,不,不是。 -
你似乎理解正确。
-
@Someprogrammerdude 好的,谢谢
-
@SouravGhosh 我的意思是我对字节序感兴趣,这只是一个例子
-
@QStack 不管是什么,错误的代码只不过是错误的代码,特别是那些可能导致 UB 的代码。
标签: c memory stack endianness