像老师们请教一个问题,基本数据类型

千梦一生 2020-01-08 10:41:52
已经确认的一点,就是,C语言似乎只规定了数据类型之间的关系,却没有规定死具体宽度。
比方说long,在64位windows下就是4B,而linux下就是8B。
假如,我想
define Mylong 4Byte
应该怎么去定义呢?
在做数据处理的时候,宽度就显得很重要,需要明确下来。我希望自己预定义一个明确宽度的数据类型,如何做才好?

或者?有没有哪个基本数据类型,是非常明确地表示它就是某某长度(最好是1B)
...全文
45 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
千梦一生 2020-01-08
  • 打赏
  • 举报
回复
谢谢两位的回答,对我很有帮助。我这里先结帖,再寻思下。
寻开心 2020-01-08
  • 打赏
  • 举报
回复
windows的头文件里面有很多类似这样的定义

根据系统的情况来,定义具体的类型是什么

winows自己能判断是出来自己是win32, win64, 甚至其他的一些操作系统
再根据这些标志,定义匹配的数据类型

这个方法是通用的,但是代码不是通用的, 不同的编译器的写法不完全一样

按照这个思路,源代码是一份儿, 针对不同的环境和编译器,提供不同的配置文件, 配置文件是源代码的一部分, 一起编译, 仅仅修改对应的配置文件来适配不同的操作系统和环境。
寻开心 2020-01-08
  • 打赏
  • 举报
回复
不是那样搞的
具体长度是和操作系统以及编译器有关系的
你代码也不是编译成exe文件所有系统就通用了的

要生成不同的环境的可执行文件的时候,使用不同的配置就是了
简单的说弄一个头文件里面做定义
#define INT32 int
这就适用win32、win64系统了

要8B的
windows下
#define int64 long long
linux下
#define int64 long

类似这样的方式, 不同的系统和编译环境使用不同的定义,这样只修改一个地方就好了
weixin_40290083 2020-01-08
  • 打赏
  • 举报
回复
可能我没有理解你的问题,如果你是想知道每个基础数据的宽度,就只能使用sizeof来计算了。C中基础数据类型也比较少,可以使用结构体数组来存放得到的结果。
weixin_40290083 2020-01-08
  • 打赏
  • 举报
回复
基础数据类型所占用的字节数应该修改不了,对于较小的数,计算结果不受影响,无非就是比较浪费内存, 对于大数来讲,可能需要自己编写算法了。 char型应该在任何系统中都占1个字节
千梦一生 2020-01-08
  • 打赏
  • 举报
回复
能想到一个办法,用sizeof然后去一个个对,就是感觉比较low。

64,662

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧