如何不用sizeof判断操作系统的位数

操作系统位长判断源码 前言 在计算机的发展中,经历了8位机到64位机的历程,在不久的将来还会有更高位长的计算机出现,它们的每一次升级都是技术的一次大进步,正是如此才构造如此纷繁多样的数字电子世界。尽管高性能计算机不断涌现,但是诸如低端的8位机也并没有退出人们的视野,比如常见的51及STM8系列的8位机仍然用在一些实时控制终端领域。如何识别操作系统的位长,这是一个程序员面试常考题,这里用C语言剖析如何实现操作系统位长的... 阅读详情

void main(int argc,char** argv)

{
   typedef char * PType;
    PType array[2];
    char *p0 = (char *)&array[0];
    char *p1 = (char *)&array[1];
    printf("%d",8*(p1 - p0));

}


常用数据类型对应字节数
      可用如sizeof(char),sizeof(char*)等得出

      32位编译器:

      char :1个字节
      char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
      short int : 2个字节
      int:  4个字节
      unsigned int : 4个字节
      float:  4个字节
      double:   8个字节
      long:   4个字节
      long long:  8个字节
      unsigned long:  4个字节

      64位编译器:

      char :1个字节
      char*(即指针变量): 8个字节
      short int : 2个字节
      int:  4个字节
      unsigned int : 4个字节
      float:  4个字节
      double:   8个字节
      long:   8个字节
      long long:  8个字节
      unsigned long:  8个字节




如何在C++中判断操作系统的位数? 在C++编程中,有时候我们需要根据操作系统的位数来进行不同的处理。例如,在32位操作系统上,我们可能需要使用32位的整数类型,而在64位操作系统上,我们可能需要使用64位的整数类型。如果你的程序需要在其他平台上运行,可以考虑使用条件编译来针对不同的操作系统进行适配。如果无法确定操作系统的位数,则会输出"无法确定操作系统位数"。如果无法确定操作系统的位数,则会输出"无法确定操作系统位数"。在C++中,可以使用预定义的宏来判断操作系统的位数。返回指针类型的大小,通常情况下,指针的大小与操作系统的位数相对应。 阅读详情

相关推荐

HDI盲埋孔设计规范:高速PCB信号完整性落地指南

盲埋孔是高密度互连(HDI)PCB实现高速信号完整性的关键技术,其本质是通过控制过孔stub长度、优化回流路径和提升布线密度,解决GHz级信号在传统通孔结构下出现的谐振、串扰与EMI超标问题。其设计核心在于叠层物理约束、电气参数建模与工艺能力协同,涉及stub长度计算、反焊盘尺寸推导、孔壁粗糙度Rz控制等关键指标。广泛应用于DDR4、PCIe Gen4、USB3.2等高速接口的PCB设计中,尤其在车载ADAS、5G基站及FPGA载板等对SI/PI要求严苛的场景中成为刚性门槛。

weixin_34416754的博客 437

不用 sizeof 判断操作系统是 32 还是 64 位

2018上半年折腾了一回,想换个后台开发岗尝试锻炼一下自己,面了三个部门,将有关有意思的题目汇总记录下来,供大家参考。 解法一: 我们知道,C/C++中,32位系统下编译生成的程序,书写代码时,整形数值默认取值范围是-2^31至2^31-1,加上数值后缀L,表示长整型,取值范围也是-2^31至2^31-1,加上LL表示尝尝整型数值,取值范围是-2^63至2^63-1。64位系统下编译生成的64......

Doublelv 的博客专栏。 3389

避开这些坑!RK3588安卓系统内置输入法的正确姿势(含.mk文件修改指南)

本文详细解析了在RK3588安卓系统定制中预置第三方输入法的完整流程与关键避坑指南。重点涵盖APK签名、Android.mk文件编写、系统默认输入法配置(使用adb ime list命令获取服务名)以及SeLinux策略适配等核心步骤,并指出RK3566/RK3568等兄弟平台的通用性与差异点,帮助开发者实现稳定、深度的系统集成。

tgb34567890的博客 437

构造函数中的this指针

构造函数中的this指针作者:温昱说明:感谢网页C++ FAQ Lite的作者Marshall Cline和译者申旻;感谢《C++语言核心》一书的作者Gregory Satir和Doug Brown及译者张铭泽-------------------------------原理-------------------------------某些人认为不应该在构造函数中使用this指针,因为

ljx0305的专栏 1581

计组实验5:cache大小测量与 cache line 大小测量

前言 今天做了实验5,通过 c 语言测 cache 参数。其实按理来说挺简单的,只是我们班没给代码,纯靠自己。听说别的班有给代码 emm 因为《深入理解计算机系统》这本书上面给的代码是 Linux 平台下的,而且需要一个 fcyc2 头文件,可以在 https://github.com/fabiensanglard/CpuCacheMountainViewer 这里找到。 ⚠ 我没有在 Linux 下试过课本上面的代码。。。 我是在 win10 下测试的。。。 所以 。。。 我并不确定我的代码是否正确。

AKGWSB 's blog 1万+

【ChatGPT实战案例】ChatGPT如何帮助产品经理高效工作?

1. 产品经理主要工作方向, 2. 具体工作中,向ChatGPT提问参考

weixin_62909516的博客 1900

C 语言实现当前操作系统多少位,不用sizeof。

typedef struct toy_st{    void * pv[8];    int off;}Toy;int main(int argc, char* argv[]){    int size = &((Toy*)0)->off; return 0;}/* 有感于offset,写完自己都震撼了。 */ 

Jimmy 847

uniapp [微信小程序] - 实现语音播报功能+实时收款播报,使用同声传译插件做文字转语音播报类似微信/支付宝收款播报小程序语音识别和朗读,手机提醒播放自定义收款语音信息(音频+收款金额+文案)

uniapp-实现语音播报功能,实时收款播报,uni-app/vue 文字转语音朗读(附小程序语音识别和朗读)uniapp小程序使用文字转语音播报类似支付宝收款播报小程序语音识别和朗读)IOS苹果手机播报没有声音,生成语音并播放,微信小程序接入官方wechatSi(微信同声传译)uniapp小程序使用文字转语音播报类似支付宝收款播报,uni-app 小程序端实现文字语音播报,uniAPP文本转语音,uniapp 文字转语音文字播报,手机静音播放没声音,收款方提示音 文字转语音朗读 同声传译,uniapp小程

🏆 前端领域优质创作者 3795

不用sizeof(), 判断系统是32位还是16位或64位

今天偶然看到这个题目,想了一下,然后是在网上搜了一大堆,终于,找到了一个令我自己比较满意的答案。下面介绍一下:         由于系统是16位或32位或64位,在某种意义上来说指的是其地址总线的条数,也等价于其CPU一次能够处理的数据的最大位数。而我们在程序中与地址相关的就是指针了,所以基于这些理由,可以想象,我们可以从判断指针所占的字节数入手,编写代码: #include //由于要用到

dashao598的专栏 3835

达梦数据库导入报错:[警告]服务器与文件内数据的 CASE_SENSITIVE 参数不匹配,成功终止导入, 但出现警告dimp V8,本地编码:PG_GBK, 导入文件编码:PG_UTF8

达梦数据库管理系统的最新版本是8.0版本,简称DM8。DM8采用全新的体系架构,在保证大型通用的基础上,针对可靠性、高性能、海量数据处理和安全性做了大量的研发和改进工作,极大提升了达梦数据库产品的性能、可靠性、可扩展性,能同时兼顾OLTP和OLAP请求,从根本上提升了DM8产品的品质。达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM。[警告]服务器与文件内数据的 CASE_SENSITIVE 参数不匹配,成功终止导入, 但出现警告。4.无视警告,输入y,回车。

十三月的博客 1万+

hwasan / asan详细分析踩内存之一:Use after free

UAF漏洞全称为use after free ,即利用已经被free掉的堆块被再次利用,该漏洞的存在是因为程序编写者在free堆块部分没有将该堆块的fd指针改为0,进而导致该堆块可以被申请回来,3.内存块被free后,其对应的指针没有被设置为 NULL,但是在它下一次使用之前,有代码对这块内存进行了修改,那么当程序再次使用这块内存时,就很有可能会出现奇怪的问题。2.堆块free后,对应指针没有被设置为NULL,即还可以调用会该堆块,当我们申请一个比该堆块小于等于的size时。

1398

不用sizeof判断系统是多少位的

面试会问道如何不用sizeof判断系统是多少位的 思路: 1、因为可能会判断系统是64位的,所以我们需要采用16进制来表示, 那么此刻地址应该是16个十六进制+结束符‘\0’,总共17位。 这里我们可以考虑用一个char buff[17]的数组来存储。 char buff[17]; 2、定义一个char类型的指针,让其指向0号地址单元,此时p的值为0x0000(16位系统)或0x00000000(32位系统) 或者指向一个 -1(0xffff…)的地址记得强转下(char*)0 或者(char*)-1。 c

Jack的博客 918

代谢组数据分析(一):生成代谢组数据SummarizedExperiment对象

本文介绍了基于Zeybel 2022年发布的多组学数据集的分析脚本,该数据集包含微生物组、宿主人体学指标、临床学指标、血浆代谢组和免疫因子等多维度数据,涵盖56位患者的横截面数据和22位患者的纵向时间序列数据。脚本旨在生成适用于下游分析的数据对象,主要包括phyloseq和SummarizedExperiment两类。phyloseq对象用于整合微生物群落数据,支持多数据整合、可视化、丰富分析功能和便捷的数据处理;SummarizedExperiment对象则广泛应用于基因组学和转录组学研究,便于数据整合、

专注生信领域 2991

不用sizeof(), 判断系统是32位还是16位...

<br />#include <cstdio> #include <cstdlib> #include <iostream> using namespace std; int main() { unsigned int a = ~0; if( a>65536 ) { cout<<"32 bit"<<endl; } else { cout<<"16 bit"<<endl; }

CNnumen 1167

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

c++判断程序及操作系统位数

曾经在树上  参考:http://www.360doc.com/content/12/0327/12/1016783_198221448.shtml

AltenLi 5891

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

如何查看Linux操作系统的位数?

原贴:http://qingteng1983.itpub.net/post/24906/279443 如何查看Linux操作系统的位数? =========================================================== 作者: qingteng1983(http://qingteng1983.itpub.net) 发表于: 2007.04.11

最实用的Linux博客 7136

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

用程序判断操作系统是16位还是32位(或64位)的?

今天复习了下C++,总结了这两种方法用于判断操作系统的位数,但第一种方法只能用于判断是32位以上还是16位的,不能判断是32位还是64位的,因为地址空间在32位和64位系统下都是一样的。第二种方法可以判断。 第一种方法:用sizeof()判断 #include using namespace std; int main() { char *p = NULL; if(sizeof(p)

yamizZ的博客 1689

如何查看操作系统位数

1. 编程实现: 在程序中返回sizeof(int)的值,返回的结果是操作系统的字节数。若返回4则是32位操作系统,返回8即是64位。 2. getconf命令: getconf命令可以获取系统的基本配置信息,比如操作系统位数,内存大小,磁盘大小等。 例如:getconf LONG_BIT 或getconf WORD_BIT 3. uname -a 4. uname

455

CPU位数和操作系统位数

CPU位数是指CPU一次能处理的二进制数的最大位数。这是体系结构决定的。 操作系统的位数是由字长决定(word size)。字长决定了指针的大小,指针的大小决定了操作系统中的虚拟空间的最大值。 故操作系统的位数可由sizeof(char *)决定。 值得注意的是,在64位系统下编译的程序,int类型通常也只有4个字节。(《深入理解计算机系统v3》P28)

ghalcyon的博客 1867

判断操作系统的位数和主机字节序s

实现了2个 函数,判断操作系统的位数和主机字节序#include stdio.h>int show_sys_bit(void);int show_sys_endian(void);int main(int argc,char * argv[]){ show_sys_bit(); show_sys_endian(); return 0; }/*   获取操作系统的位数   返回的为实际位数*

cinience的专栏 1620

如何查看Linux操作系统的位数

如何查看Linux操作系统的位数

sdfshfh的博客 1万+

不用sizeof(), 判断系统是32位还是16位

//不用sizeof(), 判断系统是32位还是16位... #include #include #include using namespace std; int main() { unsigned int a = ~0; if( a>65536 ) { cout<<"32 bit"<<endl; } else {

聚精会神搞建设 1775
上一篇: 剖析程序的内存布局
下一篇: Linux实现 memcpy和memmove
小文兄弟
博客等级 码龄17年 28粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值