基本数据类型
变量与常量
·有些数据类型在程序使用之前已经预先设定好了,在整个程序的运行过程中没有变化,这些称为常量。
·有些数据类型在程序运行期间可能会改变或被赋值 ,这些称为变量。
位、字节和字
位、字节和字是描述计算机数据单元或储存单元的术语。这里主要指储存单元
位
最小的储存单位是位(bit),可以储存0或1。虽然1位储存的信息有限,但是计算机中位的数量十分庞大。位是计算机内存的基本构建块。
字节
字节(byte)是常用的计算机储存单位。对于几乎所有的机器,1字节均为8位。
字
字(word)是设计计算机是给定的自然存储单位。对于8位的微型计算机(如,最初的苹果机)1个字长只有8位。从那以后,个人计算机字长增长至16位、32位,直到目前的64位。计算机的字长越大,其数据转移越快,允许的内存访问也更多
二进制编码储存整数和浮点数
对我们而言,整数和浮点数的区别是它们的书写方式不同。对计算机而言,它们的区别是储存方式不同。
整数
和数学的概念一样,C语言中,整数是没有小数部分的数。
浮点数
2.75,3.16E7,7.00和2e-8都是浮点数,3.16E7表示3.16*10^7,其中7被称为10的指数。
八进制和十六进制
·通常,C语言都假定整型常量是十进制数。因为8和16都是2的幂,所以八进制和十六进制计数系统在表达与计算机相关的值时很方便。
·C语言中0x或0X前缀表示十六进制值。转换说明符为%x.
·C语言中0前缀表示八进制。转换说明符为%o.
·如果要在八进制和十六进制值前显示0和0x前缀,要分别在转换说明中加入#。
C语言基本数据类型
整型int类型
字符char类型
char类型用于储存字符,但是从技术层面看,char是整数类型。因为char类型实际上储存的是整数而不是字符。计算机使用数字编码来处理字符,即用特定的整数表示特定的字符。最常用的编码是ASCII编码。
声明char类型变量
char response;
char itable,latan;
以上声明创建了3个char类型的变量:response,itable,latan。
字符常量和初始化
char grade = 'A';
在C语言中,用单引号括起来的单个字符被称为字符常量。
非打印字符
单引号只适用于字符、数字和标点符号,浏览ASCII表就会发现,有些ASCII字符打印不出来。例如,一些代表行为的字符(如,退格、换行、蜂鸣)。有以下两种方法表示这些字符:
1——使用ASCII码。例如,蜂鸣字符的ASCII的值是7,因此可以这样写:
char beep = 7;
2——使用特殊的符号序列表示一些特殊的字符。这些符号序列叫做转义序列,把转义序列赋给字符变量时,必须用单引号把转义序列括起来:
char nerf = '\n';
打印字符
printf()函数用%c指明待打印的字符。
char ch = 'A';
printf("这是%c\n",ch);
其中\n表示换行。
输出结果为
这是A
_Bool类型
C99标准添加了_Bool类型,用于表示布尔值,即逻辑值true和false。因为C语言用值1表示true,值0表示false,所以_Bool类型实际上也是一种整数类型。但原则上它只占用1位储存空间,因此对于0和1而言,1位的储存空间够了。
float、double类型
float的转换说明符是%f,
double的转换说明符是%lf,
long double的转换说明符是%llf。
%.2f指保留2位小数
类型大小
printf("int类型的大小是%zd\n",sizeof(int));
结果
int类型的大小是4
sizeof是C语言的内置运算符,以字节为单位给出指定类型的大小。
C99和C11提供%zd转换说明符匹配sizeof的返回类型。