|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 zxcvbnmasdf 于 2021-11-2 19:10 编辑
想问下各位大佬,第8行为什么是要等于0x78,写78就是错的,会打印出大端
但最后我有试着打印出*p的值却是78
- #include <stdio.h>
- int main(void)
- {
- int num = 0x12345678;
- unsigned char *p = (unsigned char *)#
- if (*p == 0x78)
- {
- printf("您的机器采用小端字节序。\n");
- }
- else
- {
- printf("您的机器采用大端字节序。\n");
- }
- printf("0x12345678 在内存中依次存放为:0x%x 0x%x 0x%x 0x%x\n", p[0], p[1], p[2], p[3]);
- printf("%x\n",*p);
- return 0;
- }
复制代码
本帖最后由 jackz007 于 2021-11-2 19:26 编辑
0x78 是十六进制表述,78 是十进制表述,两者当然不一样,0x78 = 120,78 = 0x4e。
本例代码一律使用十六进制表述,所以,不可以使用十进表述的 78,而必须使用十六进制表述的 0x78,只有这样,本代码才可以给出正确的判断。
至于显示 * p 会打印出 78 的问题,那是因为用了 "%x" 格式描述符,打印出来的是十六进制值,如果改用 "%d" 的话,打印出来的一定是 120。
|
|