命名规则
在c语言中给变量和函数起名的时候,由字母、数字、下划线构成;必须以字母或下划线开头。
注意:起名的时候要求见名知意。大小写敏感
C语言的程序结构
一个完整的C语言程序,是由一个、且只能有一个main()函数(又称主函数。必须有)和若干个其他函数结合而成。
main函数是程序的入口,即程序从main函数开始执行。
数据类型
基本类型
char、short int、int、long int、float、double
构造类型
由若干个相同或不同类型数据构成的集合,这种数据类型被称为构造类型。
数组、结构体、共用体、枚举
常量和变量
常量:在程序运行过程中,其值不可以改变的量
整型、实型、字符型、字符串
变量:其值可以改变的量被称为变量
数据类型
整型常量:(按进制分)
十进制:以正常数字开头
八进制:以数字0开头
十六进制:以0x开头
整型变量:
有/无符号短整型(un/signed)short(int) 2个字节
有/无符号整型(un/signed)int 4个字节
有/无符号短整型(un/signed)long(int) 4个字节
实型数据(浮点型)
实型常量
实型常量也称为实数或者浮点数
十进制形式:由数字和小数点组成
指数形式:不以f结尾的常量是double类型
以f结尾的常量是float类型
实型变量
单精度(float)和双精度(double)
float型:占4字节,7位有效数字,指-37到38
double型:占8字节,16位有效数字,指数-307到308
字符数据
字符常量
直接常量: 用单引号括起来
转义字符:以反斜杠“\”开头,后跟一个或几个字符,
字符变量:
用char定义,每个字符变量被分配一个字节的内存空间
字符值以ASXII码的形式存放在变量的内存单元中
字符串常量
是由双引号括起来的字符序列
字符常量与字符串常量的不同
单引号为字符常量,双引号为字符串常量
格式化输出字符:
%d: 十进制有符号整数
%u: 十进制无符号整数
%x: 以十六进制表示的整数
%o: 以八进制表示的整数
%f: float 型浮点数
%lf: double型浮点数
%e: 指数形式的浮点数
%s: 字符串
%c: 单个字符
%p: 指针的值
特殊应用
%3d: 宽度为3位,如果不足3位,前面空格补齐;如果足够3位,此语句无效
%03d: 宽度为3位,如果不足3位,前面0补齐;如果足够3位,此语句无效
%-3d: 宽度为3位,如果不足3位,后面空格补齐;如果足够3位,此语句无效
%.2f: 小数点后只保留2位
类型转换
数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题
转换的方法有两种:自动转换;强制类型转换
自动转换遵循一定的规则,由编译系统自动完成,强制类型转换把表达式的运算结果强制转换成所需的数据类型。
自动转换的原则:
1、占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。
2、转换方向
(1) 当表达式中出现了 char、short、int类型中的一种或多种,没有其他类型,参加运算的成员全部变成int类型的参加运算,结果也是int类型的。
(2) 当表达式中出现了带小数点的实数,参加运算的成员全部变成double类型的参加运算,结果也是double型。
(3) 当表达式中有有符号数也有无符号数,参加运算的成员变成无符号数参加运算,结果也是无符号数。(表达式中午实数)
(4) 在赋值语句中等号右边的类型自动转换为等号左边的类型。
(5) 注意自动类型转换都是在运算的过程中进行临时行的转换,并不会影响自动类型转换的变量的值和其类型。
强制转换:
通过类型转换运算来实现 (类型说明符)(表达式)
功能:把表达式的运算结果强制转换成类型说明符所表示的类型
例:
(float)a; //把a的值转换为实型
(int)(x+y); //把x+y的结果值转换为整型
注意:类说明符必须加括号
说明:
无论是强制转换或是自动准换,都只是为了本次运算的需要,而对变量的数据长度进行的临时性转换,而不改变数据定义的类型以及它的值。
运算符
用算数运算符将运算对象(也称操作数)连接起来的、符合C语法规则的式子,称为C算术表达式,运算对象包括常量、变量、函数等。如果是函数是用函数的返回值参加运算。
运算符的分类
1、双目运算符:即参加运算的操作数有两个
2、单目运算符:参加运算的操作数只有一个;++自增运算符;–自减运算符
3、三目运算符(条件运算符):参加运算的操作数有3个
(判断条件)?(值1):(值2) 如果判断条件成立,为真,则输出值1;若不成立,为假,输出值二。
算数运算符
加、减、乘、除、取余、加等于、减等于、乘等于、除等于、取余等于
关系运算符
大于(>)、小于(<)、等于(==)、大于等于、小于等于、不等于(!=)
不等于一般用于判断条件是否满足或者循环语句
逻辑运算符
&&逻辑与:两个条件都为真,则结果为真。
||逻辑或:两个条件至少有一个为真,则结果为真
!逻辑非:取反
位运算符
& 按位与:任何值与0的0,与1保持不变
-
| 按位或:任何值或1的1,或0保持不变,全0为0;可以实现将指定位置1。
- 按位取反:1变0,0变1
^ 按位异或:相异得1,相同的0。
位移:<<左移;>>右移
注意:右移分逻辑右移和算数右移
右移:逻辑右移 高位补0,低位溢出
算数右移 有符号数:高位补符号位,低位溢出
无符号数:高位补0,低位溢出
左移:高位溢出,低位补0
条件运算符
(判断条件)?(值1):(值2) 如果判断条件成立,为真,则输出值1;若不成立,为假,输出值二。
逗号运算符
(),():逗号运算符的结果是后面表达式的结果
算数右移
右移:逻辑右移 高位补0,低位溢出
算数右移 有符号数:高位补符号位,低位溢出
无符号数:高位补0,低位溢出
左移:高位溢出,低位补0
条件运算符
(判断条件)?(值1):(值2) 如果判断条件成立,为真,则输出值1;若不成立,为假,输出值二。
逗号运算符
(),():逗号运算符的结果是后面表达式的结果
逗号运算符的优先级最低