第一章 概述中的重点
每一个C语言程序中只能含有一个main函数(主函数是一个程序的入口,程序的运行从main函数开始)
第二章 数据类型 运算符 表达式
1.C语言中的数据类型分为基本类型 指针类型 构造类型 空类型
基本类型分为整形 字符型 浮点型 枚举类型,在浮点型中又分为单精度浮点型和双精度浮点型。
构造类型又分为数组类型 结构体类型 共用体类型
2.基本的数据类型按取值是否可以改变又分为常量与变量
对于常量的声明 可以用宏定义 #define 标识符 常量 ps:习惯上宏定义中的标识符为大写 变量的标识符为小写以便区分。
也可以用const 数据类型 标识符,对于const定义的变量是不可以改变的
3.常量的表示
在C语言中常用的整形常量有二进制 八进制 十进制 十六进制
在程序中是根据前缀来区分各种进制数 八进制以0开头 数码取值为0~7 十六进制以0X或0x开头 数码取值为0~9 A~F(或者a~f)
二进制是8位 由0~1数码取值构成 负数的二进制数的表示是正数二进制数取反再加1得到的
4.变量
变量在内存中是通过二进制存储下来的 也就是说我们声明一个变量 这个变量存储在内存中的一块区间 当我们赋值结束后在系统会把我们赋值的十进制数转变为二进制数保存在内存中的那块空间中
一个字节(BYTE)=八比特(BIT)
整形变量对应的基本数据类型有 int ;short int;long int;long long int;unsigned int(无符号整形)
浮点型变量对应的基本数据类型有 float;double;long double ;等
1)对于浮点型数据有两种表示方法 第一种就是普通的十进制小数表示 第二种是指数表示 指数表示中-3.7E-5 这种是正确的 E前面数字无要求 E后面数字必须是整数
2)对于浮点型数据会有舍入误差 将长度特别长的数据存入float中会导致数据不精准 产生误差
3)由例子3/2 == 1 ;3.0/2 == 1.5;1/3*3 ==0即可说明问题
字符型对应的基本数据类型是char
1)字符常量是用单引号括起来的一个字符 例如‘a’‘=’‘?’都是合法的字符型常量,在C语言中字符常量只能用单引号括起来,不能用双引号或者其他括号;字符常量只能是单个字符,不能是字符串;数字被定义为字符常量后不可以参与运算,‘5’与5是不一样的,一个为字符型一个为整形。
2)转义字符:是一种特殊的字符常量 转义字符以\开头 后面跟一个或几个字符,转义字符有特定的含义,不同于字符原来的意思\n换行 \tTAB \b退格 \r回车 \\反斜杠 \'单引号 \"双引号 \a振铃 \ddd1~3位8进制数 \xhh1~2位十六进制数
3)字符变量中存储的字符是以ASCⅡ码形式存放的 char a = ‘a’实际在内存中存储的是a对应的ASCⅡ码
A~Z对应的ASCⅡ码为65~90 a~z97~122 大写字母与小写字母之间差一个空格符对应的ASCⅡ码 也就是32 大写字母+32 ==小写字母
4)当向字符型变量赋值整形时 如 char a=120;时相当于把ASCⅡ码表中为120的字符存储到a中 原理就是不管怎么样 对于字符型变量的赋值都是将ASCⅡ码存入其中系统在使用的时候再自动转换回来
可以 a = a-32这样将小写字母转为大写字母
————————————————————————————————————————————————————
不同数据类型的量混合运算时会发生类型的自动转换 转换规则都是由小范围转换为大范围 char和short型参与运算时必须转成int型
转换的另一种形式是强制类型转换 也就是相当于 (int)a 强制把变量a的类型转换为int型 PS:转换都是临时转换 不会改变这个变量原有的数据类型。
————————————————————————————————————————————————————
(一)算术运算符中的自加 自减运算符的区分:
int i = 0; 用printf输出i++和i-- 得到的结果都是0
但是++i得到的结果是1,--i得到的结果是-1,原因就是自加自减运算符放在标识符或者数字后面表示的是运行完这条语句再自加一,反而言之,放在前面就是先自加一再执行这条语句。
(二)赋值运算符
“=”为赋值运算符 a=b=c=5可理解为a=(b=(c=5)) 赋值运算符的结核性是从右到左
在赋值运算符中的自动转换是将赋值号右边的内容的类型自动转换为左边变量的类型。
(三)复合赋值运算符
+= -= *= /= %= a+=5即为a = a+5; x*=y+7 即为x = x(y+7);
(四)逗号运算符和逗号表达式
y = (x=a+b),(b+c);这条语句的意思是将b+c赋值给y,即把逗号运算符后面的表达式的值赋值给前面的变量。