最新消息:发现真没时间折腾VPS,最近又换了个空间。呵呵

C语言的数值类型及其定义与输出

在C语言中,数值类型可以分成两个大类:整形数值和浮点型数值。
整形数值有五种类型:char,short,int,long和long long。这五种类型又分别有带符号(signed)和不带符号(unsigned)两种,默认为signed。
浮点型数值有三种类型:float,double和long double。浮点型数值没有带符号和不带符号的区别。

各种数值类型所占内存大小和取值范围

现在基本上没有16位的机器了,除long之外,其它所有类型在32位和64位编译器中所占内存大小是一样的。long在32位编译器中占4Byte,在64位编译器中占8Byte。

类型内存大小小数点后位数值范围
char1 byte-128 ~ 127
unsigned char1 byte0 ~ 255
short2 byte-32768 ~ 32767
unsigned short2 byte0 ~ 65535
int4 byte-2147483648 ~ 2147483647
unsigned int4 byte0 ~ 4294967295
long(x86)4 byte-2147483648 ~ 2147483647
unsigned long(x86)4 byte0 ~ 4294967295
long(x64)8 byte-9223372036854775808 ~ 9223372036854775807
unsigned long(x64)8 byte0 ~ 18446744073709551615
long long8 byte-9223372036854775808 ~ 9223372036854775807
unsigned long long8 byte0 ~ 18446744073709551615
float4 byte6±1.175494E-038 ~ 3.402823E+038
double8 byte15±2.225074E-308 ~ 1.797693E+308
long double12 byte18±3.3621031E-4932 ~ 1.18973149E+4932

各种数值类型常量的定义

数值类型常量是指直接在程序中写数字,比如123,123.45。在前面提到数值类型可以分成两个大类:整形数值和浮点型数值。对于整形数值来说,如果不加后缀,其类型默认为int;对浮点型数值来说,如果不加后缀,其类型默认为float。

下面来分别介绍整形数值和浮点型数值的后缀,要注意的是后缀是不区别大小写的。

  • 对于整形数值来说,有以下后缀
    u 表示不带符号
    l 表示long型
    ll 表示long long型
    比如我们要定义一个无符号的long long型的常量123可以这样写:123ull。

  • 对于浮点型数值来说,有以下后缀
    f 表示float型
    l 表示long double型
    比如我们要定义一个long double型的常量123.45可以这样写:123.45l。

各种数值类型的printf输出

对于整形数值来说,输入时有长度和类型的定义
长度可以分为char,short,int,long和long long五种;类型可以分为八进制,十六进制,无符号十进制,有符号十进制四种,其中八进制,十六进制是无符号的。

类型写法
char长度hh
short长度h
int长度不需要
long长度l
long long长度ll
八进制o
十六进制x或者X
无符号十进制u
有符号十进制i或者d

比如要输入一个long long型的十六进制数可以写成printf("char: %llx\n", 0x7FFFFFFFFFFFFFFF);
要注意的是char长度的输出时好像和short长度一样,可能是我的编译器有问题

对于浮点型数值,只有类型的定义

类型有浮点型,科学记数法,短写法,十六进制四种。

类型写法
浮点型f或者F
科学记数法e或者E
短写法g或者G
十六进制a或者A

写法中的大小写表示输入的字符串的大小写。
另外要注意的是不知道是我编译器有问题还是什么,long double型的数字无法输出。

转载请注明:宇托的狗窝 » C语言的数值类型及其定义与输出

发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址