当前位置:网站首页>C语言如何分辨大小端
C语言如何分辨大小端
2022-07-31 05:09:00 【怎么这么多名字都被占了】
震惊!C语言分辨大小端竟如此简单
c语言有个面试题,叫分辨电脑是大端还是小端。
大端模式,是指数据的高字节保存在地址空间的低地址中,而数据的低字节保存在地址空间的高地址中
小端模式,是指数据的高字节保存在地址空间的高地址中,而数据的低字节保存在地址空间的低地址中
怎么分辨?上代码
#include<stdio.h>
int main(void){
short a=0x01;//0x..为16进制数,0x01写成short类型是00000000 00000001
char *c=&a;//这里面访问变量里的地址时,遵循char的访问规则,如果是大端,则*c=0
if((*c)==0){
printf("big\n");
}else{
printf("small\n");
}
return 0;
}
???是不是很懵?我相信有点基础的人肯定知道这个
#include <stdio.h>
typedef union Un{
char c;
short i;
}un;
int main()
{
un n;
n.i=1;
if (1 == n.c){
printf("small\n");
}
else{
printf("big\n");
}
return 0;
}
这段代码应该不用解释了,网上一大堆。那么,我来解释一下上面的代码。
如注释所说,变量a在地址空间中是这么存的:
00000000 00000001
而指针类型的变量p中存的地址是a的地址,但用char的访问规则读取时,只读取
00000000
或
00000001
的一个。如果读取的是00000000,说明高字节保存在地址空间的低地址中,反之说明低字节保存在地址空间的低地址中。由此,就可以判断出大小端了,是不是很简单?
还有什么方法?分享出来吧!
边栏推荐
猜你喜欢
With MVC, why DDD?
【LeetCode-SQL每日一练】——2. 第二高的薪水
面试官问我TCP三次握手和四次挥手,我真的是
CentOS7 - yum install mysql
[Cloud Native] DevOps (5): Integrating Harbor
Kubernetes 证书可用年限修改
面试官,不要再问我三次握手和四次挥手
Information System Project Manager Core Test Site (55) Configuration Manager (CMO) Work
MySQL forgot password
MySQL事务(transaction) (有这篇就足够了..)
随机推荐
Kubernetes 证书可用年限修改
SQL语句中对时间字段进行区间查询
pycharm专业版使用
12 reasons for MySQL slow query
Doris学习笔记之监控
MYSQL下载及安装完整教程
centos7安装mysql5.7
【MQ我可以讲一个小时】
太厉害了,终于有人能把文件上传漏洞讲的明明白白了
MySQL database addition, deletion, modification and query (detailed explanation of basic operation commands)
MySQL8.0.26安装配置教程(windows 64位)
Three oj questions on leetcode
限流的原理
[Detailed explanation of ORACLE Explain]
DVWA installation tutorial (understand what you don't understand · in detail)
MySQL优化:从十几秒优化到三百毫秒
wx.miniProgram.navigateTo在web-view中跳回小程序并传参
ERP Production Operation Control Kingdee
ABC D - Distinct Trio(k元组的个数
【ORACLE Explain 详解】