C primer plus个人读后总结

食用指南:背景为黄色的是特殊标注,比较重要。下滑线的是比较不重要的。

第一章:数据和C

关键字:int、short、long、unsigned、char、float、double、_Bool、_Complex、_Imaginary;_Complex、_Imagainary表示复数和虚数

运算符:sizeof()

函数:scanf()

1.int类型

int16_t、int32_t、int64_t等都在 stdint.h库里面 

一般情况下——short占16位,long占32位,int占16或32位,longlong类型占64位

● 定义 123默认存储为int类型,如果超过int类型的最大值,会自动转换成long,若更大,自动转换成unsigned long -> long long

● 要把一个较小的常量当做long类型,需要在末尾加上l/L

● 无符号类型的溢出后从0重新开始,有符号的溢出从最大值得相反数从新开始。

● 打印short用%hd,打印long 类型用%ld,如果以十六进制或八进制输出,可以将d换成x或o

2.隐式转换和显式转换 short类型格式化输出时用%hd long类型格式化输出时用%lld

隐式转换:自动转换 

显式转换:强制转换 

float a = 2.00;

(int)a;

uint32_t的最大值可以用UINT32_MAX来表示,以此类推。

3.float类型float.h FLT_MAX:float类型的最大值(带小数点的和科学计数法的都是浮点型)

     FLT_MIN:float类型的最小值

上溢:比最大值还要大 FLT_MAX*1000.0

下溢:比最小值所表示的小数还要多FLT_MIN/1000.0

INFINITY:最大/小值

NAN(NOT A NUMBER):无法确定的数

4.四舍五入

最近偶数舍入(银行家舍入):四舍六入,五后非0进1,五后皆零看奇偶(如果位尾数的整数部位是奇数,

向上舍入,使得变为偶数。如果位尾数的整数部位是偶数,保持不变)

5.float 和 double

● double的精度更高,占用内存更大,float精度低,但占用内存小。C语言写小数没有定义类型,默认为double类型。float和double的格式化输出都使用%f

● 科学计数法 :打印使用%e

3.1E+5代表3.1 * 10 ^5

3.1E-5代表3.1 * 10 ^-5

可以没有小数部分(2.E5),或没有整数部分(.3E5),但不能小数和整数部分都没有

6.十六进制和八进制

十六进制的前缀是0x,八进制的前缀是0,打印出十六进制数用%x,打印出八进制数用%o,打印出前缀需要在“%”后+“#”

7.char类型:占用一个字节;实际上的字符是以数值形式存储的。

第二章:字符串和格式化输入/输出

1.字符串:

● 没有专门用来储存字符串的数据类型,所以字符串都被保存在char类型数组中,以'\0'结尾

● scanf()只会读取字符串中的一个单词(遇到空格就停止);scanf读取字符串时不需要' & '。

● strlen():计算字符串的长度,直到空字符为止,但不计入空字符;在string.h库中

2.常量

● 常量的定义 #define NAME value 常量通常使用大写来表示

● const限定符,用以限定一个变量为只读 const int MONTHS = 12,MONTHS在程序中只读,不能被更改

3.输出/入

● sizeof()以字节为单位返回类型或值得大小,标准只规定了该值是无符号整数,在不同系统中可能会是不同的整数类型,为了更好地移植性,c语言将size_t定义为sizeof()返回的类型;打印时使用%z

● 标记:

  ○ -:待打印项作对齐

  ○ +:待打印项右对齐

  ○ 空格:有符号值为正,在值前面显示前导空格,若为负数,在值前面显示减号

● 修饰符 *:如果不想预先指定字符宽度,可以用*修饰符代替字符宽度,但还要用一个参数告诉函数,字段宽度为多少

printf("%*d", width, num);width代表字符宽度

scanf("%*d %*d %d",&n);跳过两整数,把第三个整数拷贝给n

第三章:运算符、表达式和语句

● 运算符优先级!=递增>逻辑运算符>算术运算符

● 递增前缀和递增后缀的区别:

int a = 1, b=2;

a_post = a++;

b_post = ++b;

printf("a_post = %d b_post = %d", a, b);

/*输出a_post = 1,b_post = 2,

后缀是先使用a的值后递增a,后缀是先递增b的值后使用b的值*/

        递增和递减符号的优先级都很高,只有括号里面的优先级比他们高

    y = 2;

    n = 3;

    m = (y + n++) * 6

    代入y和n得m=( 2 + 3) * 6,n的值只有被使用后才会递增,n++代表先使用n,再递增。++n表示先递增,再使用n

第三章:循环

 

ctype.h用来处理字符的头文件

isalnum()数字,字母

isalpha()字母

isdigital()数字

islower()小写字母

isupper()大写字母

toupper()将小写字母转换成大写字母

tolower()将大写字母转换成小写字母

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值