0、C语言的组成
组成:若干文件
文件:若干函数
函数:函数头+函数体
函数头:函数返回类型+函数名+ () +形参类型+ 形参名 /* 函数声明只需要声明形参类型即可,这里不深入 */
函数体:{ }+语句
语句:三类语句
C语言区分大小写
注释语句;定义语句;执行语句
分号为语句结束符
1、数据与数据类型
数据四类:常量、变量、表达式、函数
用运算符将数据连接起来的合法式子
函数:调用具有一定功能函数作为运算量
数据类型四类:基本类型、构造类型、指针类型、空类型
基本类型:字符型char、整形 int、浮点型(单精度) float、双精度 double、枚举类型 enum
构造类型:数组类型、结构体类型 struct、共用体类型 union
空类型:void
基本类型都是内置的,拿来就可以用的。构造类型需要自己构造。
常量四类:整形常量(十进制、八进制、十六进制)、实型常量、字符型常量、字符串常量
整形常量:1
实型常量:2.333
字符型常量:'a'
字符串型常量:"hello world"
二进制 三位 变 八进制一位
二进制 四位 变 十六进制一位
二进制 转 十进制:
例如:101010 (2) = 1*2^5 + 0*2^4 + 1*2^3 + 0*2^2 + 1*2^1 +0*2^0 (10)
十进制 转 二进制 :
例如 13(10) = 1101(2)
技巧:除2取余倒排。(直到被除数为0停止)
C语言中 符合 8进制 编码要求的数,且首位为0,认为是八进制
例如:0770(正确) 0990(错误、不符合8禁止编码)
C语言中 符合 16进制 编码要求的数,且首位为0x或0X,认为是十六进制
实型常量(小数、指数)
例如:0.1 或 .1 (点号前不写0也是合法的)
例如:1.23E5或 1.23e5
e表示权值为10,e/E后面的数位次方
规则:1、字母e/E前后必须有数,且e后的数必须为整数 2、e/E前后不能有空格
字符串常量:用一对引号括起来的若干字符
规则:
1、每个字符串都有一个字符串结束符 ' '
2、C语言中没有字符串变量
所以C语言中的字符串常量都是借存(不深入)
变量使用规则:先定义后使用
定义格式:数据类型名 变量名列表 ;
变量名属于标识符,遵守标识符命名规则。在同一函数体中,不能定义同名变量,同时定义多变量,必须用逗号分开,变量可以赋初始值,无初始值则是系统分配随机值
2、标识符
标识符三类:保留字(关键字)、预定于标识符、用户自定义标识符
1 保留字:共32个 2 3 4 1 数据类型关键字(12个): 5 (1) char :声明字符型变量或函数 6 (2) double :声明双精度变量或函数 7 (3) enum :声明枚举类型 8 (4) float:声明浮点型变量或函数 9 (5) int: 声明整型变量或函数 10 (6) long :声明长整型变量或函数 11 (7) short :声明短整型变量或函数 12 (8) signed:声明有符号类型变量或函数 13 (9) struct:声明结构体变量或函数 14 (10) union:声明联合数据类型 15 (11) unsigned:声明无符号类型变量或函数 16 (12) void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用) 17 18 19 (2)控制语句关键字(12个): 20 A循环语句 21 (1) for:一种循环语句(可意会不可言传) 22 (2) do :循环语句的循环体 23 (3) while :循环语句的循环条件 24 (4) break:跳出当前循环 25 (5) continue:结束当前循环,开始下一轮循环 26 B条件语句 27 (1)if: 条件语句 28 (2)else :条件语句否定分支(与 if 连用) 29 (3)goto:无条件跳转语句 30 C开关语句 31 (1)switch :用于开关语句 32 (2)case:开关语句分支 33 (3)default:开关语句中的“其他”分支 34 D 35 return :子程序返回语句(可以带参数,也看不带参数) 36 37 38 3 存储类型关键字(4个) 39 (1)auto :声明自动变量 一般不使用 40 (2)extern:声明变量是在其他文件正声明(也可以看做是引用变量) 41 (3)register:声明积存器变量 42 (4)static :声明静态变量 43 44 45 4 其它关键字(4个): 46 (1)const :声明只读变量 47 (2)sizeof:计算数据类型长度 48 (3)typedef:用以给数据类型取别名(当然还有其他作用 49 (4)volatile:说明变量在程序执行中可被隐含地改变 50 51 预定义标识符:预先定义并具有特定含义的标识符,scanf、printf、include
52 https://blog.csdn.net/21aspnet/article/details/1539252(这哥们整理的的,链接52行)
用户自定义标识符:变量名、数组名、函数名
用户自定义标识符命名规则:第一个字符必须是字符或下划线,后面由字母、数字、下划线组成
3、表达式
取余运算时候,余数的正负与被除数一致。整形除法运算得到的商,如果能整除,则为整除数、如果不能整除,则只去整数,小数都忽略
3.2、赋值运算符合赋值表达式
运算方向:从右至左
运算优先级:14( 1最高 )
赋值符号:=
格式:变量名 = 表达式
赋值运算符的功能:将表达式赋给 ”= “左边的变量(左值)
例如: A = 1 + 2 ; (赋值表达式的值等于被赋值变量的值)
例如:a=b=2(合法的)
注释:1、赋值运算符左边只能是一个变量 2、赋值运算符右边可以是合法表达式 3、赋值表达式的值等于赋值运算符左边的变量值
4、不同类型之间赋值,系统在可转换的前提下进行类型转换。比如实型数赋值给整形变量,转换为整类 ,后面的小数则会被省略
复合赋值号优先级与运算方向与赋值号一样
+=、-=、*=、/=、%=、&=、|=、^=、>>=、<<=、
3.3、前置自增自减、后置自增自减
自增、自减只能用于变量,不能用于常量和表达式.前置和后置的区别在于对表达式的改变
++a 为 前置自增表达式,表达式的值=4,变量的值为4
a++为 后置自增表达式。表达式的值=3,变量的值为4
int a1=1,a2=1.a3=1,a4=1; int c1,c2,c3,c4; c1=++a1 //表达式(++a)=2,变量c1= 2 c2=a2++ //表达式(++a)=1,变量c2= 2 c3=--a3; //表达式(--a)=0,变量c3= 0 c4=a4-- //表达式(a--)=1,变量c4= 0
C语言中隐式转换为少字节类型向高字节类型转换