g*******s 发帖数: 2963 | 1 char a=1;
int b = (int)a;
int c = *((int*)&a);
在大小印第安机器中运行,a在内存里均为:
低位地址- 0001 -高位地址
因为只有一个byte,问b和c在内存里的表示是什么样子
我想的答案是,但好像不太对。我的机器是小印第安。printf b结果为1,但c却不是1?
大印第安: b-> 0000 0000 0000 0001
c-> 0001 0000 0000 0000
小印第安: b-> 0001 0000 0000 0000
c-> 0001 0000 0000 0000 |
g**G 发帖数: 767 | |
g*******s 发帖数: 2963 | 3 改了。。。
【在 g**G 的大作中提到】 : 这个一般叫成大端...
|
a***n 发帖数: 538 | 4 c会是随机的吧,因为a后面存的不确定阿。
char a[] = {1,0,0,0} |
r**h 发帖数: 1288 | 5 b和endian没关系,c是不定值
【在 g*******s 的大作中提到】 : char a=1; : int b = (int)a; : int c = *((int*)&a); : : 在大小印第安机器中运行,a在内存里均为: : 低位地址- 0001 -高位地址 : 因为只有一个byte,问b和c在内存里的表示是什么样子 : 我想的答案是,但好像不太对。我的机器是小印第安。printf b结果为1,但c却不是1? : 大印第安: b-> 0000 0000 0000 0001 : c-> 0001 0000 0000 0000
|
g*******s 发帖数: 2963 | 6 那我的理论答案对么?
直接cast变量会保证value不变,但内存布局会根据大小端不同
相反cast pointer保证内存布局不变,但会导致value在大小端不同
【在 a***n 的大作中提到】 : c会是随机的吧,因为a后面存的不确定阿。 : char a[] = {1,0,0,0}
|
a***n 发帖数: 538 | 7
差不多吧。
【在 g*******s 的大作中提到】 : 那我的理论答案对么? : 直接cast变量会保证value不变,但内存布局会根据大小端不同 : 相反cast pointer保证内存布局不变,但会导致value在大小端不同
|