LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1469|回复: 10

想定义一个无论32位还是64位系统上都是16位的无符号整型怎么定义?

[复制链接]
发表于 2005-9-19 16:20:30 | 显示全部楼层 |阅读模式
我看了一下linux的用法,好像是__u16,__u16是标准c中定义的吗?
发表于 2005-9-19 19:39:13 | 显示全部楼层
typedef unsigned short __u16;
回复 支持 反对

使用道具 举报

发表于 2005-9-19 19:47:48 | 显示全部楼层
如果要看标准,可以参考/usr/include/stdint.h
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-20 14:50:13 | 显示全部楼层
看了一下,这样的话是不是其实并没有我所说的那种在任何系统下位数都相同数据类型啊。int short这些类型的长度在不同系统下应该是不一样的。
回复 支持 反对

使用道具 举报

发表于 2005-9-20 15:31:44 | 显示全部楼层
int在不同系统下位数是不同的,但是short、long是固定的,short是16位,long是32位。
回复 支持 反对

使用道具 举报

发表于 2005-9-20 16:51:12 | 显示全部楼层
#include <sys/types.h>

int8_t
int16_t
int32_t
int64_t
uint8_t
uint16_t
uint32_t
uint64_t
回复 支持 反对

使用道具 举报

发表于 2005-9-21 08:29:18 | 显示全部楼层
Post by haohao_h
看了一下,这样的话是不是其实并没有我所说的那种在任何系统下位数都相同数据类型啊。int short这些类型的长度在不同系统下应该是不一样的。


不好意思,偶怎么觉得错了。
char ,long是固定的
一个是8位,一个是最长位,也就是64位下,long是64位。
回复 支持 反对

使用道具 举报

发表于 2005-9-21 10:00:08 | 显示全部楼层
64位是long long
回复 支持 反对

使用道具 举报

发表于 2005-9-21 19:21:55 | 显示全部楼层
最好是用typedef来定义一下,这样如果需要平台转化的话,只要修改typedef的定义就可以了。
回复 支持 反对

使用道具 举报

发表于 2005-9-22 21:42:40 | 显示全部楼层
还是JAVA好的说,无论在任何系统下面都是固定的.......
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表