c语言flt_max,老刘试讲C语言3之基本数据类型

9e69f98abc9e64a11436e0fb0fe1ae9e.png

基本数据类型

基本数据类型包括整数类型和浮点数类型。

整数类型类型名称size占位符典型值/示例char字符型1字节%c'a' '\n' '1'

signed char有符号字符型1字节%hhdSCHAR_MIN SCHAR_MAX

short短整型2字节%hd123 SHORT_MIN SHORT_MAX

int整型4字节%d123 INT_MIN INT_MAX

long长整型4字节%ld123l LONG_MIN LONG_MAX

long long长长整型8字节%lld123ll LLONG_MIN LLONG_MAX

unsigned char无符号字符型1字节%hhu123 0 UCHAR_MAX

unsigned short无符号短整型1字节%hu123 0 USHORT_MAX

unsinged int无符号整型4字节%u123u 0 UINT_MAX

unsinged long无符号长整型4字节%lu123l 0 ULONG_MAX

unsinged long long无符号长长整型8字节%llu123ull ULLONG_MAX

浮点数类型类型名称size占位符典型值/示例float单精度浮点型4字节%f/%E1.0f 1.0F 1e2f 1E2f FLT_MIN FLT_MAX

double双进度浮点型8字节%f/%E1.0 .123 1e2 1E2 DBL_MIN DBL_MAX

long double长(多)精度浮点型8字节%Lf/%ELDBL_MIN LDBL_MAX

以上的数据类型size是在用于x86 的 Microsoft (R) C/C++ 优化编译器 19.11.25547 版cl下测试得到的,在其他编译平台下可能有差异。

char

一般用于存放一个字符,但是实际上他是普通的整数类型, cl变压器默认情况下等价signed char,在少数编译下默认为unsigned char。

整数值0~127都有对应可见字符或者控制符,可以查看ASCII码表获得对应关系。char c1 = 'A';

printf("c1=%c c1(dec)=%d\r\n", c1);

signed char

有符号整数类型,大部分编译器为一个字节。对应是无符号类型为unsigned char。signed char a = 1, b=2;

signed char c = a + b;

printf("c=%hhd", c);

short

和short int或者signed short int是等价的。大部分编译器为2个字节。对应的无符号类型为unsigned short或者nsigned short int。short a = 1, b=2;

short c = a + b;

printf("c=%hd", c);

int

和signed int等价,在大多数编译器下为4/8字节。对应的无符号类型为unsigned或者unsigned int。int a = 1, b=2;

int c = a + b;

printf("c=%d", c);

long

等价于signed long int,在大多数编译器下为4/8字节。对应的无符号类型为unsigned long或者unsigned long int。long a = 1, b=2;

long c = a + b;

printf("c=%ld", c);

long long

等价于signed long long int,在大多少编译器下为8字节。对应的无符号类型为unsigned long long或者unsigned long long intlong long a = 1, b=2;

long long = a + b;

printf("c=%lld", c);

float

单精度浮点数。4个字节。float a = 1.1f, b=2.1f;

float c = a + b;

printf("c=%f", c);

double

双精度浮点数。8个字节。double a = 1.1, b=2.1;

double c = a + b;

printf("c=%f", c);

long double

(略)

有符号和无符号

signed char/short/...的类型位有符号的整数类型,signed常常缺省不写,unsigned char/short/int/...为无符号整数。

值特点

有符号整数类型可以存储0、正数和负数,无符号只可以存储0和正数。

符号位

有符号类型高位存储符号位(sign)表示正负,0为正,1为负,当为正数时,剩下的位数存储正数值,当为负数时,剩下的位数存储负数绝对值的补码(取反加1)。特殊情况:所有位为0时代表0,符号位为1,其他位都是0时代表该类型所能存储的最小负值。

数据类型的size

不同类型可能有不同的size,可以用sizeof获得某种类型的size,sizeof返回的结果是size_t类型的,使用%z占位符。printf("char size=%z\r\n", sizeof(char));

printf("short size=%z\r\n", sizeof(short));

printf("int size=%z\r\n", sizeof(int));

类型size特点:数据类型的size和编译器和编译目标程序的位数有关,和编译器与目标程序运行的操作系统位数无关。但是C语言标准有基本的要求:long long 大于等于 long 大于等于 int 大于等于 short 大于等于 char。

unsigned和signed只会影响类型的符号位,不会影响类型的size,比如signed int和unsigned int的size是一样的。

类型的值范围

不同类型数值类型可存储的值范围是不同的。超出该类型的所能存储范围都会出现溢出。

下面为获取值范围的方法示例代码片段,注意获取整数类型范围定义需要包含limits.h,而浮点数需要获取值范围和精度定义需要包含float.h。#include 

....

printf("signed char min=%hhd\r\n", CHAR_MIN);

printf("signed char max=%hhd\r\n", CHAR_MAX);

printf("short min=%hd\r\n", SHORT_MIN);

printf("short max=%hd\r\n", SHORT_MAX);

.......

#include 

....

printf("float min=%f\r\n", FLT_MIN);

printf("float max=%f\r\n", FLT_MAX);

printf("double min=%f\r\n", DBL_MIN);

printf("double max=%f\r\n", DBL_MAX);

.......

使用16进制16进制字面量

C语言在16进制数字前添加0x前缀,以和其他进制的数字区别,比如16进制的值123要表示为0x123。16进制格式化输出

printf支持将各种整型值格式化输出为16进制数,其占位符号为%x或者%X,使用x将输出小写(a~f),使用X将输出大写(A~F)。常用%02X、%04X、%08X、%16X,即加上长度限制,用于对应输出1个字节、2个字节4个字节、8个字节的整数。

使用16进制更能反映变量内存的真实情况,比如下面例子:signed char i1 = 0x80;

printf("i1 = %d, i1(hex)=%02x", i1, i1);

头文件所在目录

limits.h:D:\Software\SDK\vs2017\VC\Tools\MSVC\14.11.25503\include注意D:\Software\SDK\vs2017是vs2017安装目录。

stdio.hC:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt

float.hC:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值