四个问题?
1、C语言有哪些数据类型?有哪些整数类型?有哪些浮点类型?
2、各种数据类型如何表示?输入输出格式化有哪些?
3、各种类型大小是多少?范围是多少?
4、如何选择整型类型和浮点类型?
1、数据类型
数值类型分为整型(整数)和浮点型(小数)。按照表示数字范围的从大到小
整数分为五类:字符型(char)、短整型(short)、整型(int)、长整型(long)和长长整型(long long)
浮点型分三类:单精度型(float)、双精度型(double)和长双精度型(long double)
1.1 获取类型大小
关键字sizeof:查看变量或者类型大小
int n;
printf("%d",sizeof(int));
printf("%d",sizeof(n));
上面的括号不是必须的,但是建议带上。所以也可以如下表示:
int n;
printf("%d",sizeof int);
printf("%d",sizeof n);
1.2 各种类型的大小
printf("sizeof(char)=%d\n",sizeof(char));
printf("sizeof(short)=%d\n",sizeof(short));
printf("sizeof(int)=%d\n",sizeof(int));
printf("sizeof(long)=%d\n",sizeof(long));
printf("sizeof(long long)=%d\n",sizeof(long long));
printf("sizeof(float)=%d\n",sizeof(float));
printf("sizeof(double)=%d\n",sizeof(double));
printf("sizeof(long double)=%d\n",sizeof(long double));
输出的结果为:
通常有些类型大小并不是固定的,计算机硬件、操作系统和编译器都会影响类型的大小。通常类型大小有如下规律:
char < short < int < float < double
int <= long <= long long
在常用的计算机硬件和操作系统中,各种类型的大小如下表所示:
1.3 字节
sizeof获得数据的单位是Byte(字节)。Byte(字节)是计量存储容量的一种计量单位,一个字节是8位二进制,可容纳256个数字。一个ASCII字符就是一个字节。
除了Byte(字节),还有其他常用存储容量单位
有时,我们用B表示Byte(字节),用b表示bit(比特/位),注意两者区别。
1.4 输入输出格式化
double的输入占位符必须是%lf,输出占位符可以是%f。
2、整数类型
2.1 表示范围
每种数据类型大小不同,各自表示数据范围也不同。下面的常用类型的范围。
上面的是通常范围(32位下),实际上有些情况略有出入。总之,类型的表示范围与类型大小存在如下关系:
2.2 无符号整型
在一些特殊情况下,数据只用0和整数,不存在负数,这时可以使用无符号整型unsigned。无符号整型只是在原来的整型前加上关键字unsigned。因为没有负数,所以数值的表示范围扩大了一倍。
类型的表示范围与类型大小存在如下关系:
其中,n是类型大小。
输入输出无符号整型格式:
2.3 整型类型选择
整型类型很多,通常遵循下面的使用规则:
(1)大多数情况下使用int。
(2)如果int范围不够,使用long long。
(3)避免使用long。
(4)谨慎使用unsigned。
3、浮点类型
3.1 浮点数的范围
(1)运行下面程序,分析执行结果