C Primer Plus 6 第三章编程练习

xiaoxiao2021-02-28  30

一、知识点复习

程序离不开数据,C语言提供两大数据类型:整数类型和浮点数类型。最初K&R给出的C语言关键字有int、long、short、unsigned、char、float、double,C90标准增加了signed和void,之后C99标准又添加了_Bool、_Complex、_Imaginary。

1.变量和常量

1.1定义

(1)变量:在程序运行期间可能会改变或被赋值的数据类型。 (2)常量:在整个程序运行过程中不会改变的数据类型。

1.2整型常量的写法示例

类型十六进制八进制十进制char\0x41\0101int0x41010165unsigned int0x41u0101u65ulong0x41L0101L65Lunsigned long0x41uL0101uL65uLlong long0x41LL0101LL65LLunsigned long long0x41uLL0101uLL65uLL

1.3浮点型常量写法示例

类型十进制float6.0fdouble2.3long double4.32L

2.整数和浮点数

(1)整数:没有小数部分的数。

(2)浮点数:有小数部分。

注意:计算机把浮点数分成小数部分和指数部分且分开进行存储;浮点数可以表示的范围比整数大;一些算术运算里浮点数损失的精度更多;浮点数通常只是实际值的近似值。

3.整数类型

3.1有符号整型

关键字简单定义声明举例

在printf()中的对应转换说明

(1.一般默认十进制,

2.只用小写)

八进制和十六进制的使用int

可以是正整数、负整数、0;

C语言规定int类型不小于16位

int m;

signed int m;(一般不用特意强调说明,下同)

%d见表1short

占用的存储空间可能比int少;

C语言规定short类型至少占16位

short m;

short int m;

%hd见表1long

占用的存储空间可能比int多;

C语言规定long类型至少占32位

long m;

long int m;

%ld(%Ld)见表1long long

占用的空间可能比long多;

long long类型至少占64位

long long m;

long long int m;

%lld(%LLd)见表1 表1 以八进制数144和十六进制数64为例的有符号整型转换表示  1440144(带前缀)640x64(带前缀)\0X64int%o%#o%x%#x、%#X(下略)short%ho%#ho%hx%#hxlong%lo%#lo%lx%#lxlong long%llo%#llo%llx%#llx

3.2无符号整型

无符号整型只用于非负值场合,可以表示更大的数。各关键字类型分类与声明与有符号整型类似。在printf()函数中的对应转换说明举例如下表(与有符号整型十进制int类型%d对应使用的是%u,其他进制略):

表2 十进制无符号转换说明  printf()中对应转换说明unsigned int%uunsigned short%huunsigned long%luunsigned long long%llu

3.3字符型

char型

char类型实际上存储的是整数而不是字符,计算机使用ASCII编码处理字符,标准ASCII码的范围是0~127,C语言中char类型占用一个字节。用单引号括起来的单个字符被称为字符常量。char类型的标准声明和定义如下:

char m = 'T';

printf()函数用%c指明待打印的字符。

char类型除了打印字符'T'之外,也有非打印字符。单引号只适用于字符、数字、标点符号,而有些是ASCII字符打印不出来的,所以用一些特殊符号序列表示一些特殊字符,这些特殊符号序列成为转义序列。第二章接触到的换行符\n就属于转义序列。

注意:C语言将字符常量视为int类型而非char类型,char m = 65;这种定义方式也可以但不是一种好的编程风格。

关于char类型有无符号的问题视情况而定,若有符号,可表示的范围是-128~127;若无符号,可表示的范围是0~255;特别的,若只用char处理字符,则无需任何修饰符。

3.4布尔类型

_Bool型

C99标准添加的类型,简而言之就是逻辑值true和false,用1表示true,0表示false。布尔类型属于整数类型,原则上仅占一位储存空间。在有些资料中并不把它算作C中的数据类型。

4.浮点数类型

4.1实浮点类型

(1)float

可精确表示至少6位有效数字,浮点型常量后面跟f。

(2)double

能表示比float类型更多的有效数字(至少10位)和更大的指数。

(3)long double

能表示比double更多的有效数字和更大的指数,浮点型常量后跟L。

表3 在printf()中的对应转换说明  十进制指数记数法十六进制float%f%e
转载请注明原文地址: https://www.6miu.com/read-2614186.html

最新回复(0)