参考书籍:C Primer Plus 第五版中文版 Stephen Prata(红色字重要,绿色字补充接口)
1.c程序的基本模块:函数
2.main()函数的返回值,返回的位置是操作系统->具体见**
3.分号是语句的一部分,语句和表达式之间的关系:表达式+;是表达式语句,语句还包括变量声明、空语句、if语句等
4.操作系统、c库、标准的标识符等使用一个或两个下划线开头的名字,自己命名变量时避免
5.void的意思是空的,不是无效的
6.最小存储单位是bits;1字节为8bits,所有电脑上都一样;字可能是2字节、4字节、8字节,自然存储单位
7.浮点数往往只是实际值的近似
8.printf()和scanf()的注意事项:
(1)scanf()开始读取后,会在遇到第一个空白字符(空格、制表符、换行符)停止读取,如果想读取一整行而不受空格影响,则使用get()等输入函数->具体见
(2)使用printf()时,编译器不会发现说明符数目与打印值的数目不同或者类型不符的情况(或者给出警告),参数少打印随机值,参数多不显示,类型不正确显示对应类型的0
(3)c通过一种函数原型机制检查函数调用是否使用了正确的数目和类型参数,但对printf()和scanf()不管用,他们参数数目可变
(4)如果scanf()输入错误,则数据流里面的那个值一直没有赋给任何变量,程序出错,停止读入
(5)scanf()自动在字符串后面放入\0,或者说读到空字符,转换成\0存起来
9.数字都按照二进制编码的方式进行储存(简单却重要),int赋值给uint会出现什么样的情况->按照对应二进制补码进行计算
10.char实际上是整型(叫做字符类型),只是ASCII对应的字符,‘A'存储的是65这个数
11.转义序列:\a警报 \b退格 \n换行 \r回车 \t水平制表符 \v垂直制表符
\\反斜杠 \0dd八进制数字(加' '表示字符,不写0也可以) \xdd十六进制数字
转换说明符:浮点数:%a(p计数)%A(P计数)%e(e记数)% E(E计数)%f(十进制计数)%g(自动小写)%G(大)
整数:%d %i(有符号十)%u(无符号十)%o(无符号八)%x(小写十六)%X(大写十六)
字符:%c(字符)%s(字符串)%p(指针)
转换符修饰符:夹在%与说明符之间;6.2(字段宽6.小数点后2位/整数前导零个数/有效位)浮点数:L(longdouble)
整数:h(short,ushort)hh(char uchar)l(long ulong)ll(longlong ull)t(ptrdiff_t)z(size_t)j(intmax_t)
符号:-(左对齐)+(显示正负号)(空格)(不显示+留空)#(加8,16进制前缀)0(前导零)
*.*(*根据变量指定,设定字符宽度,在变量表中需先写明,在scanf时,可作为跳过标识)
12.浮点常量中间不能有空格,用e表示法前面必须有数字,e后面不能空或者是小数,小数点前后只能省略一边
13.典型环境下各类型大小(bit)
char | short | int | long | longlong | float | double | longdouble | ||||
linux/windows | 8 | 16 | 32 | 32 | 64 | 6位 | -37到38 | 15位 | -307到308 | 18位 | -4931到4932 |
类型在提升或降级转换时有优先级的说法:从高到低 ld,d,f,ull,ll,ul,l,ui,i
14.sizeof与strlen的区别:
内置运算符sizeof()以字节为单位给出类型的大小,对于变量名或常量值,不加()也可以,一个字符的大小刚好为一字节,实际返回类型为size_t,随系统变化,一般为uint,尽量使用size_t msize=sizeof(m)
strlen()函数以字符为单位输出字符串长度
例: char name [40]="abcd";sizeof(name)=40,strlen(name)=4 如果是int,则sizeof(name)=4*40
char *name="abcdef";sizeof(na)=8,strlen(na)=6,sizeof("abcdef")=7
15.常量定义的方式: #define NAME value const int NAME = value; 枚举enum
16.c语言中a=b=c=1;的赋值方式是可以的
17.浮点数转换为整数,使用趋零结尾的方法int(-3.8)=-3
18.取模运算%,结果与第一个操作数的符号相同
19.自增运算符++比加法指令更快,与机器指令相似,优先级高,不能在同一条语句中对同一变量进行自增或者自减运算
20.完整表达式:完整的表达式不是一个更大表达式的子表达式
21.顺序点:在顺序点处,所有的副作用都在进入下一步之前被计算,顺序点有:逗号,
22.运算符优先级:由高到低() , - +(一元) ++ -- sizeof , * / % , + - , < > <= >= , == != , = *=
23.浮点数比较大小的时候,不能使用==,会有误差,是一个范围的比较,
24.while,for入口条件循环,dowhile,退出条件循环
25.getchar(),putchar(),只对字符起作用,不需要格式说明符,只是预处理器宏,而非正真的函数,getchar()接受空白字符
26.ctype.h头文件的函数:isalnum(), isalpha(), isblank(), isctrl(), isdigit(), isgraph(), islower(), isprint(), ispunct(), isspace(), isupper(), isdigit(), tolower(), toupper()
27.逻辑运算符,从左至右,能够决定整个表达式就停止计算,后面的跳过
28.break只跳出当前一层循环