- 主题:差点被chat_GPT带坑里了
问:
不同类型的数据在32位和64位系统中所占据的字节长度是不是一样的?
chatgpt答:
不同类型的数据在32位和64位系统中所占据的字节长度通常是相同的,但是整型数据类
型可能会有所不同。
在通常情况下,以下是常见数据类型在32位和64位系统中的字节长度:
- char:在32位和64位系统中通常占用1字节。
- short:在32位和64位系统中通常占用2字节。
- int:在32位系统中通常占用4字节,在64位系统中通常占用8字节。
- long:在32位系统中通常占用4字节,在64位系统中通常占用8字节。
- float:在32位和64位系统中通常占用4字节。
- double:在32位和64位系统中通常占用8字节。
在实际编程中,建议使用`sizeof`操作符来确定不同数据类型在具体系统中所占据的字
节长度。
我后来又在CSDN查了一下:
C语言标准是这样规定的:int最少16位(2字节),long不能比int短,short不能比int
长,具体位长由编译器开发商根据各种情况自己决定。在32位x86处理器上,short、in
t、long普遍的长度是2字节、4字节、4字节。当然如果编译器开发商愿意,long完全可
以是8字节。
在 win64 下,long 也是 32 bit 的,4 字节。int则是64bit,8字节!
32位平台:
char 1个字节8位
short 2个字节16位
int 4个字节32位
long 4个字节
long long 8个字节
指针 4个字节
64位平台:
char 1个字节
short 2个字节
int 4个字节
long 8个字节(区别)
long long 8个字节
指针 8个字节(区别)
--
FROM 111.193.238.*
这句是错误的:在 win64 下,int则是64bit,8字节!
搜一下LLP64、LP64那些东西
你可以给chatgpt更详细的指令,比如指定硬件平台、编译器、32还是64位编译模式这些详细参数
win64的话语权在MS,MS给win64选择的是LLP64,int是32-bit,不是64-bit
Why did the Win64 team choose the LLP64 model?
devblogs dot microsoft dot com /oldnewthing/20050131-00/?p=36563
--
修改:z16166 FROM 222.128.162.*
FROM 222.128.162.*
chatgpt虽然说的不算规定,但也没什么事实错误,就是ILP64并不是最常见。更常见的是LP64和LLP64。
【 在 sqsl 的大作中提到: 】
: 问:
:
: 不同类型的数据在32位和64位系统中所占据的字节长度是不是一样的?
: ...................
--
FROM 114.249.214.*
应该跟硬件、平台、编译器都有关系
最终在编译器上体现出来
【 在 sqsl 的大作中提到: 】
: 问:
: 不同类型的数据在32位和64位系统中所占据的字节长度是不是一样的?
: chatgpt答:
: ...................
--
FROM 120.253.228.*
CSDN 的这段话也并没有比 chatgpt 的回答更正确啊……
【 在 sqsl 的大作中提到: 】
: 问:
: 不同类型的数据在32位和64位系统中所占据的字节长度是不是一样的?
: chatgpt答:
: ...................
--
FROM 14.116.239.*
现在c/c++都有定长的类型int8_t/uint8_t、int16_t/uint16_t、int32_t/uint32_t、int64_t/uint64_t等,
需要定长场合的,用这些类型就行了
不需要定长的,也可以根据数值的范围用这些类型
【 在 ylh0315 的大作中提到: 】
: 所以我的模板工具,offset的计算,让编译器自己说,各自类型的尺寸和对齐规则。
--
FROM 222.128.162.*
你的错误在于盲信CSDN
【 在 sqsl 的大作中提到: 】
: 问:
: 不同类型的数据在32位和64位系统中所占据的字节长度是不是一样的?
: chatgpt答:
: ...................
--
FROM 113.201.75.*