校招即将开始,突然翻到了4年前的C语言读书笔记,放在此处做个存档吧,只是整理了当时的重点部分。
第三章 C语言基础
1.所有标识符必须以字母或下划线开头,而不能以数字或者符号开头;
2.标识符不能是关键字;
3.数据类型中基本类型包括:整型,字符型,实型(浮点型),枚举类型;结构类型包括:数组类型,结构体类型,共用体类型;
4.整形数据都是以二进制的方式存放在计算机内存中,其数值是以补码的形式进行表示的。正数的补码与其原码的形式相同,负数的补码是将该数绝对值的二进制形式按位取反再加1;
5.在字符常量中国存储的是字符的ASCII码值;
6.ASCII码:A(65) a(97) Z(90) z(122) 0(48);
7.long范围0~4294967295; unsigned long 范围 -2147483648~2147483647; 占4个字节;
8.在编写程序时,定义所有变量的步骤应该在变量的赋值之前,否则会产生错误;
9.在为单精度类型赋值时,需要在数值后面加f,表示该数字的类型是单精度类型,否则默认为双精度类型;单精度类型使用的关键字是float,他在内存中占4个字节;
10. 双精度类型使用的关键字是double,他在内存中占8个字节;
11.字符型变量在内存中占1个字节,取值范围是-128~127;
12.储存形式主要分为两大类:静态存储和动态存储。主要有自动(auto)、静态(static)、寄存器(register)和外部(extern)4种。
自动的作用是修饰一个局部变量为自动的,每次执行到定义该变量时,都会产生一个新的变量,并且对这个变量进行初始化。
寄存器的目的在于提高程序的运行速度。
static静态变量,作用域为声明变量的函数体内。static变量始终保持他的值。
extern变量称为外部存储变量。extern声明了程序种将要用到但尚未定义的外部变量。
13.const是只读变量,修饰的变量必须初始化。
14.用户态切换到内核态的3种方式:a.系统调用 b.异常 c.外围设备的中断
第四章 运算符与表达式
1.如果把较长的数值类型变量的值赋给比较短的数值类型变量,那么数据级就会降低级别表示,当数据大小超过比较短的数值类型的可表示范围时,就会发生数据截断,就如同溢出的水。需要强制类型转换。
2.取模运算符用于计算两个整数相除得到的余数,取模运算符的两侧均为整数。
3.常量和表达式不可以进行自增或自减运算。
4. “!=” 的优先级比 “=” 高。
5.判断是否为偶数 a%2==0偶数,a%2 !=0奇数
6.^异或运算符,相同为0不同为1。
7.逗号表达式
形式: 表达式1,表达式2,……,表达式n
逗号表达式的求解过程:先求解表达式1,再求解表达式2,一直求解到表达式n。整个逗号表达式n的值。逗号表达式称为顺序求值运算符。
Value = 2+5,1+2,5+7的值为7,而非12。由于赋值运算符的优先级比逗号运算符的优先级高,因此先执行赋值的运算。
如果要执行逗号运算,则可以适用括号运算符。
Value = (2+5,1+2,5+7)值为12.
第五章 常用的数据输入/输出函数
1.putchar()函数只能输出一个字符,如果要输出字符串就需要多次调用putchar()函数。
getchar()函数输入一个字符。
2.对字符串操作分别为puts()和gets()函数。puts()函数输出一个字符串后会自动进行换行。
3.scanf()在输入时以非空白字符开始,以第一个空白字符结束,字符串以空终止符“\0”作为最后一个字符。
第六章 选择结构程序设计
1.判断是否为闰年 if( (year%4==0)&&(year%100!=0) || (year%400==0) ) //是闰年
2.else总是与最近的if匹配。
3.条件运算符 表达式1?表达式2:表达式3
首先对表达式1的值进行检验,如果值为真,则返回表达式2的结果值,如果值为假,则返回表达式3的结果值。
4.switch语句检验的条件必须是一个整型表达式,这意味着其中也可以包含运算符和函数调用,而case语句检验的值必须是整型常量,也即可以是常量表达式或者常量运算。
5.多路开关模式的switch语句
#include
int main()
{
int month;
printf("please enter a month:\n");
scanf_s("%d",&month);
switch(month)
{