本问题已经有最佳答案,请猛点这里访问。

对于32位平台,C中的long的大小为4字节,而对于64位平台,为8字节是否正确?

通常,但不一定。 如果要使用固定大小的类型,请使用int32_t或int64_t。

long的最小大小为32位,仅此而已。

取决于特定的平台。 long至少为32位,但通常为64位。 int至少为16位,并且其位数永远不会少于long。 这些都是语言所做出的保证。

zh.wikipedia.org/wiki/64-bit_computing#64-bit_data_models

取决于数据模型,它们具有正式名称。 LLP64和LP64是常见的。 zh.wikipedia.org/wiki/64-bit_computing#64-bit_data_models。

抱歉,汉斯,LLP64 and LP64 are the common ones.并不常见,未定义。

不,这取决于实施!

唯一的规则是char必须是CHAR_BIT宽,并且大小必须是:char <= short <= int <= long <= long long和char必须至少为8位,short至少为16位,long至少为32位和long long至少64位。

因此,实际上所有整数类型(长整型除外)都可以是32位宽,并且只要CHAR_BIT设置为32,C标准就可以很好地满足要求。

我不这么认为。 sizeof(char)定义为1。所有大小均为4字节的倍数会很奇怪

@ pm100:sizeof以字符数定义。不是字节。因此,sizeof(char)始终为1。即使它是32位宽。

@ pm100参见stackoverflow.com/questions/2215445/

@ pm100:C标准将字节定义为"数据存储的可寻址单元,其大小足以容纳执行环境的基本字符集的任何成员。" C实现可使用32位字节。

@ZanLynx:还有其他规则。 CHAR_BIT必须至少为8,并且实际上short和int必须至少为16位,而long必须至少为32位。

@ZanLynx在C中,根据定义,char是一个"字节"。 C定义一个字,一个字节至少为8位,但可以更多。因此,sizeof是根据字符定义的,等效地是根据字节定义的。

只是说如果计算机的对象不小于32位会很奇怪

long的大小(通常是对象的大小)由C实现确定,而不是平台程序在其上执行。

一般而言,C实现是编译器加上运行C程序所需的库和其他支持软件。1一个平台可以有多个C实现。实际上,一个编译器可以通过使用不同的开关来请求各种配置来实现多种C实现。

一般的C实现通常使用short,int和long的大小与目标处理器模型(或多个模型)配合使用,并为程序员提供不错的选择。但是,可以将C实现设计为特殊目的,例如支持旨在用于long特定大小的旧代码。一般来说,C编译器可以针对其定义的long大小编写指令。

C标准对对象的大小施加了一些较低的限制。字符CHAR_BIT中的位数必须至少为8。 short和int必须能够表示从?32767到+32767的值,并且long必须能够表示从?2147483647到+2147483647的值。它还要求long能够表示所有int值,int能够表示所有short值,并且short能够表示所有signed char值。除此之外,C标准没有什么要求。在特定平台上,不需要int或long为特定大小。操作系统对于编程语言内部发生的事情没有发言权。操作系统设置了运行程序和与系统连接的要求,但是,在程序内部,软件可以执行其所需的任何操作。因此,编译器可以根据需要将17位称为int,而操作系统对此无权控制。

脚注

1 C 2011标准(草案N1570)在第3.12节中将实现定义为"一组特定的软件,在特定的控制选项下在特定的翻译环境中运行,该软件在以下位置执行程序翻译并支持以下功能的执行:特定的执行环境。"

C实现通常需要符合OS的ABI。

@Barmar:操作系统是实现的一部分。

如果是这样,那么32位OS = 32位C,64位OS = 64位C,对吗?

@Barmar:否。出于实用目的,通用计算机已经完整了。这意味着您可以在任何通用计算机上执行任何计算(不超过硬件的物理范围)。您可以在64位计算机上编写具有16位int的C编译器,并且可以在16位计算机上编写具有64位int的C编译器。 C标准不需要C实现即可提供与操作系统的直接接口。它仅需要标准的库例程,并且可以编写这些例程以执行任何必要的调整以与操作系统一起使用。

c语言的程序是32位还是64位,在C语言中,对于32位计算机和64位计算机,long的大小是多少?...相关推荐

  1. c语言4钟存储类型关键字用法,求C语言中的32个关键字及其意思? C语言中32个关键字的意思和用法~!...

    C语言中的32个关键字及其意思如下: 1.auto    声明自动变量 2.short    声明短整型变量或函数 3.int    声明整型变量或函数 4.long    声明长整型变量或函数 5. ...

  2. c语言中的所有关键字,C语言中的32个关键字

    C语言中的32个关键字 数据类型关键字(12个) (1)     char:声明字符型变量或函数 (2)     double:声明双精度变量或函数 (3)     enum:声明美剧类型 (4)   ...

  3. c语言int16位数据范围,c语言中int取值范围为16位指的是什么16位

    1.c语言中int取值范围为16位指的是什么16位 计算机用二进制表示数值,最小单位就是位(bit),可以储存0或1,16位就是有16个储存0或1的位,其中左边第一位是符号位,0代表+ .1代表-. ...

  4. c语言 ——int16,c语言中int取值范围为16位指的是什么16位

    匿名用户 1级 2013-10-20 回答 1.c语言中int取值范围为16位指的是什么16位 计算机用二进制表示数值,最小单位就是位(bit),可以储存0或1,16位就是有16个储存0或1的位,其中 ...

  5. c语言中 a6,C语言中的32个关键字

    C语言中的32个关键字 数据类型关键字(12个) (1)     char:声明字符型变量或函数 (2)     double:声明双精度变量或函数 (3)     enum:声明美剧类型 (4)   ...

  6. c语言程序中最小的单位是,1.在C语言中,程序的基本单位是

    语言中"此中有真意,欲辨已忘言"是哪位诗人的诗?() 基本Teenagers usually begin dating in and eventually find partner ...

  7. C语言中7除以14的答案,2015年计算机二级《C语言》精选练习题及答案(14)

    1[简答题]规定输入的字符串中只包含字母和*号.编写函数fun,其功能是:删除字符串中所有的*号.编写函数时,不得使用c语言提供的字符串函数. 例如,字符串中的内容为"****A*BC*DE ...

  8. C语言中double\float类型默认输出几位小数

    首先,吐槽一下,就这么几句话的事情,你就收费,真的不想说啥了~ 然后正文给大家分享一下小数点默认输出的位数 C语言中常用的小数有俩种类型: float  比特数32  有效数字 6~7 double  ...

  9. c语言notify方法,【红烧小鲫鱼】关于在纯C语言中的Shell_NotifyIcon应用

    [红烧小鲫鱼]关于在纯C语言中的Shell_NotifyIcon应用 有如下代码,可以运行,但是程序会崩溃,有些地方我不会设置. 求如何设置,要用纯C语言的哦! // HELLO.cpp : Defi ...

  10. c语言中复合语句不用花括号,【单选题】C语言中,可将一系列语句置于( )从而构成复合语句。 A. 一对尖括号\ \之间 B. 一对圆括号\( )\之间 C. 一对花括号 { } 之间 D....

    [单选题]C语言中,可将一系列语句置于( )从而构成复合语句. A. 一对尖括号\"< >\"之间 B. 一对圆括号\"( )\"之间 C. 一对花 ...

最新文章

  1. Open3d 学习计划—12(Jupyter 可视化)
  2. PHP GD库生成图像的几个函数总结
  3. Pandas高级教程之:plot画图详解
  4. JavaScript中函数的变量提升问题
  5. 全国二级计算机理论知识,2021年度全国计算机等级考试二级MSOffice常考知识点基础知识部分.doc...
  6. 国外问答网站Quora数据的爬虫 Java
  7. 通过Bigtop编译Hadoop组件的rpm包
  8. 嵌入式设备中支持国密算法的方法——移植Miracl库的步骤说明
  9. 深度学习中的batch,iteration,epoch复习总结
  10. linux shell 将命令行终端输出结果写入保存到文件中
  11. 《Java性能调优实战》00丨开篇词丨怎样才能做好性能调优?2022.03.08-20220329学习完
  12. SpringCloud 统一网关Gateway -- 为什么需要网关、Gateway快速入门、路由断言工厂(Route Predicate Factory)
  13. Pygame:外星人入侵
  14. 截面数据 缺少行业风险
  15. 搜狗视频搜索华丽改版 奉献一份体验报告
  16. 和字节跳动大佬的技术面谈,醍醐灌顶!
  17. 【Vegas原创】华为一键强制关闭后台应用的终极解决方法
  18. 武汉安全员ABC证报名条件有什么要求?甘建二
  19. iPhone6 像素 分辨率
  20. ur机器人编程-程序流程

热门文章

  1. ai109b_gm.dll(ai109b_gm.dll文件缺失修复)
  2. 2022-1-23 5992.基于陈述统计最多好人数
  3. 逻辑函数(IF函数)
  4. 2021-11-14剑指OfferII019.最多删除一个字符得到回文
  5. 2020世界大学生超级计算机竞赛,世界大学生超级计算机竞赛 清华大学夺冠 | 外教网...
  6. SQLServer找不到配置管理器,如何打开配置管理器
  7. java断路器触发条件_Spring Cloud:第四章:Hystrix断路器
  8. rss 阅读器+ flomo
  9. redmine备份_Bitnami Redmine备份方法
  10. 蔡高厅高等数学14-极限的存在准则