C程序设计读书笔记

个人读书笔记,一些C语言容易忘的知识点!
2.1.1
预处理,预处理器执行以#开头的命令,替换和删除指定代码
编译,编译器把程序翻译成指令(目标代码)
链接,链接器把由编译器产生的目标代码和所需的其他库文件链接形成可执行文件
cc编译器是UNIX系统的工具
GCC编译器是随Linux发行的编译器

2.4.1
float型变量存储的数值是实际数值的一个近似值,比如0.1,实际存储的是0.09999999999999987,是存储的舍入误差导致的
变量的类型:决定了变量的存储方式以及允许对变量进行的操作

2.4.4
默认情况下%f显示小数点后6位数字,在%和f之间添加.p来强制小数点后的数字比如%.2p显示小数点后2位数字
C语言的一个通用原则:在任何需要数值的地方,都可以使用具有相同类型的表达式
包含小数点但没有以f结尾的实际是double类型

3.1.1
转换说明符
%-m.pf
m表示要显示出来的宽度,不足补空格,超出不限制
p是小数点后保留几位
-表示在m宽度内左对齐

常见转换说明符:
d 十进制
e 指数
f 定点十进制
g 指数形式或定点十进制形式
i 可输出八进制,十进制,十六进制。具体根据匹配的数

4.1
%运算符要求操作数是整数,如果两个操作数有一个不是整数,程序无法通关编译
运算符/会丢掉小数部分,比如1/2结果是0而不是0.5
零作为/和%的右操作符时会出现未定义行为
由实现定于:是指程序在特定平台上编译、链接、和执行所需要的软件。尽量避免编写由实现定义行为的程序

4.2.2
左值:表示存储在计算机内存中的对象而不是常量或计算的结果。
v += e不等价于v = v + e
计算 v += e只会求一次v的值
计算 v = v + e则会求两次v的值
后一种情况下,对v求值可能引起的任何副作用(side effect)也会出现两次

后缀++和–执行自增和自减的时间:
C语言标准中引入”顺序点“的概念,并且指出”应该在前一个顺序点和下一个顺序点之间
对存储的操作数的值进行更新“。C语言有多种顺序点,表达式语句的末尾是其中一种。

5.2
故意省略switch语句中的break的时候最好明确的表示出来,比如
case 4: case 3: case 2:这种

if (i = j) //当在逻辑判断的语句中出现这种代码的时候编译器一般会警告(-wall),可以使用 if((i = i)) 这种增加圆括号的方式抑制该警告

读/写整数
(1).读写无符号整数时,使用字母u、o或x代替转换说明中的d
u十进制,o八进制,x十六进制
(2).读写短整数时,在d、o、x前面加上字母h
hd,ho,hx
(3).读写长整数时,在d、o、u或x前面加上字母l
ld,lo,lu,lx
(4).读写长长整数时,在d、o、u、x前面加上字母ll
lld,llu,llx,llo

猜你喜欢

转载自blog.csdn.net/u010590568/article/details/70624549