C语言基本类型新手避坑指南

C语言的基本类型如下

类型长度(字节)值域备注
bool

非零(true),

零(false)

bool类型在低版本的编译器中不存在,使用时需要注意
char1-128 ~ 127也可以写做 signed char
unsigned char10 ~ 255
short 2-32768 ~ 32767也可以写做 signed short, short int
unsigned short20 ~ 65535
int4-2147483648 ~ 2147483647也可以写做 signed int
unsigned int40 ~ 4294967295
long4-2147483648 ~ 2147483647也可以写做 signed int
unsigned long40 ~ 4294967295
long long8-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
unsigned long long80 ~ 18,446,744,073,709,551,615
float41.175494351e-38 ~ 3.402823466e+38
double82.2250738585072014e-308 ~ 1.7976931348623158e+308

        上述C语言的基本类型相信各位宝子们都很熟悉吧,但是在这里要告诉大家的是,

                开发时一定不要直接使用上述类型!!!

                开发时一定不要直接使用上述类型!!!

                开发时一定不要直接使用上述类型!!!

        PS:重要的事情说三遍。

        因为C语言是标准,不是产品,不同于Java语言,在使用不同厂商的编译器,编译不同平台的二进制文件时,这些类型的长度是不固定的。很有可能会出现在这个平台运行没问题程序在其他平台运行时由于类型长度发生变化,导致数据溢出,崩溃等各种问题。

        如:在32位编译器中,int类型的长度为2字节,long类型的长度为4字节;而在64位编译器中,int类型长度为4字节,long类型长度为8字节。

        这种问题怎么解决呢?

        很简单使用确定长度的类型就好啦。在不同的编译器工具集中,厂商以及帮我们定义好了一套明确类型长度的类型别名,本质还是上述基本类型,不过字节长度是固定的,即使使用不同的编译得到的结果也是相同的。

        其类型如下所示:

类型长度(字节)值域备注
int8_t1-128 ~ 127typedef signed char;
uint8_t10 ~ 255typedef unsigned char
int16_t2-32768 ~ 32767typedef signed short int
uint16_t20 ~ 65535typedef unsigned short int
int32_t4-2147483648 ~ 2147483647

typedef signed int 

typedef signed long int 

uint32_t40 ~ 4294967295

typedef unsigned int

typedef unsigned long int

int64_t8-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

typedef signed long int 

typedef signed long long int 

uint64_t80 ~ 18,446,744,073,709,551,615

typedef unsigned long int

或 

typedef unsigned long long int

        使用上述类型是需要引入<stdint.h>头文件,该头文件在不同编译器平台中,对于int32_t和int64_t有不同的定义,确保在不同平台中类型长度保持不变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值