刚开始自学c语言,然后在看c primer plus这本书,数据类型大小这一节里书上的long是8bytes,long double 是16bytes; 而我的long是4bytes,long double是8bytes,然后与同学交流发现别人电脑都和书上一样,只有我的电脑是这种情况,希望有人能解惑。万分感谢。
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

已结题
为什么我的64位电脑long占4bytes,long double占8bytes(语言-c语言)
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除
- 收藏 举报
2条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
阿里嘎多学长 2023-04-10 18:24关注以下内容部分参考ChatGPT模型:
首先,数据类型大小是与计算机硬件架构有关的,不同的硬件架构可能会有不同的数据类型大小。其次,不同的编译器也可能会有不同的数据类型大小。
在x86-64架构的计算机上,long一般占用8个字节,而long double占用16个字节。但是,在一些嵌入式系统中,由于硬件限制,long可能只占用4个字节。
可以通过下面的代码来查看long和long double在你的电脑上的大小:
#include <stdio.h> int main() { printf("sizeof(long) = %lu\n", sizeof(long)); printf("sizeof(long double) = %lu\n", sizeof(long double)); return 0; }
如果输出的结果与你期望的不同,可能是因为你的编译器或者操作系统有不同的默认设置。你可以尝试在编译时加上一些参数来改变默认设置,例如:
gcc -m64 -std=c11 -Wall -Wextra -pedantic -o program program.c
其中,-m64表示使用64位架构,-std=c11表示使用C11标准,-Wall和-Wextra表示启用更多的警告信息,-pedantic表示启用更严格的语法检查。
如果我的建议对您有帮助、请点击采纳、祝您生活愉快
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2022-06-23 04:30回答 4 已采纳 printf("%.12Lf\n", b); __mingw_printf("%.12Lf\n", b); //windows clang64 用ucrt运行时库
- 2022-01-29 06:13回答 4 已采纳 C/C++标准只规定了int类型至少占16位,long类型至少占32位,long long类型至少占64位。至于这些类型具体占多少位是由操作系统的Data Model决定的。比如64位Windows系
- 2022-09-27 04:53回答 5 已采纳 建议你看下这篇博客👉 :long double出现0.0000的问题
- 2024-10-16 02:01心静自然凉凉凉的博客 C语言数据类型在32位机和64位机中所占的字节
- 2021-09-18 16:34回答 3 已采纳 long long换成double类型试试
- 2022-12-15 14:50回答 1 已采纳 不知道你在说什么,20041022的十六进制就是131CD3E啊,有啥不满意的呢?
- 2023-03-21 05:31回答 2 已采纳 double类型有效数字位也是有限的,大概15,16位。你这第17位就保证不了了
- 2022-01-05 06:17redrose2100的博客 如下,可以查看C语言中各种基本数据类型的占用空间的大小 # include <stdio.h> # include <string.h> int main() { printf("sizeof(char): %d\n", sizeof(char)); printf("sizeof(short): %d\n", ...
- 2021-08-12 14:49回答 1 已采纳 long的输出访问与操作系统无关,严格来讲应该是由编译系统决定数据范围。
- 2022-05-30 15:33回答 4 已采纳 修改处见注释,供参考: #include <stdio.h> #include <math.h> double interest(double amount, int yea
- 2020-07-10 02:58回答 6 已采纳 首先还是精度要求太高了,long double只能保证17~18位的存储精度,超出部分知识随机赋值,显示的结果并不是真正的数值,可以采用字符串表示数值,达到更高的精度要求
- 2021-05-19 05:07糖浆Syrup的博客 C程序演示使用long关键字...要理解此示例,您应该了解以下C语言编程主题:使用long关键字编程#includeintmain(){inta;longb;//相当于longintb;longlongc;//相当于longlongintc;doublee;longdoublef;printf("Sizeofi...
- 2023-07-11 09:40深鱼~的博客 本部分适合初学者看,非初学者可以跳过,一共130题,博主会分几次在线判题系统(Online Judge)是一种在编程竞赛中用来测试参赛程序的在线系统彼方尚有荣光在,少年不惧岁月长。
- 2024-04-19 09:06C语言作为一种高效且功能强大的编程语言,在软件开发领域有着广泛的应用。对于初学者而言,理解C语言的基础知识至关重要,尤其是其中的数据类型部分。本文将深入探讨C语言中的数据类型及其相关概念,帮助读者更好地...
- 2020-08-25 08:22而在64位系统中,地址总线宽度为64位,理论上指针大小应该为8个字节,但在实际中为了保持向下兼容,指针大小仍保持为4个字节。 3. sizeof运算符的使用: sizeof是一个一元运算符,用来得到一个对象或类型所占用的...
- 没有解决我的问题, 去提问
问题事件
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司