1. 常量
1.1 定义
在程序运行过程中不能被改变的量
1.2 整形常量
1.3 浮点型常量
1.4 字符常量
1.5 字符串常量
"ab" == 'a' + 'b' + '\0'
"ab\0" =='a' + 'b' + '\0' + '\0'
'\0' : 标识字符串结尾(每个字符串末尾都有一个\0)
"a" == 'a' + '\0'
'a' == 'a'
1.6 标识常量
#define PI 3.1415
注意:
1.宏定义名字可以小写,但为了和变量区分,一般都用大写
2.宏定义时能加括号就加括号,不要吝啬小括号
宏只是代码的替换,中间不进行任何数据计算的操作
2. 变量
2.1 定义
在程序运行过程中值可以发生改变的量,通常变量先定义再使用,默认为随机值
2.2 变量的定义
数据类型 变量名;
2.3 变量名
1.只能由字母、数字、下划线组成
2.不能以数字开头
3.不能与C语言关键字重名
4.最好不要与C语言库函数重名
5.变量名最好见名知意
6.可以采用驼峰法(软件编程常见)、Linux内核命令方法(内核开发
2.4 变量的初始化:
在定义变量时为变量赋初值
2.5 整形变量:
short Num;
unsigned short Num;
int Num;
unsigned int Num;
long Num;
unsiged long Num;
char Num;
unsigned char Num;
2.6 浮点型变量:
float f;
double d;
3. 数据类型转换
3.1 显式类型转换(显示类型转换)
(数据类型)变量名
将变量类型强制类型转换为括号内所写类型(注意:只临时转一次)
3.2 隐式类型转换:
不同数据类型完成数据运算、数据处理做隐式类型转换
转换规则:
1.低精度向高精度转换
1.浮点型比整形精度范围更高
2.同种类型所占字节空间越大,精度范围越高
3.无符号精度范围比有符号精度范围更高
short 进行数据处理时会默认转换为int类型
float 进行数据处理时会默认转换为double类型
char short -> int 低
long
unsigned
float -> double 高
4. 语句
以 ; 号结尾的一段代码称为语句
5. 表达式
由一个或者多个运算符及 变量/常量 组成的式子称为表达式
表达式一定是有值
6. 运算符
6.1 算数运算符
+
-
*
/
% (唯一不能对浮点数操作的算数运算符)
++ : 自增运算符
-- : 自减运算符
i++ : 后置++ 先用再加
++i : 前置++ 先加再用
6.2 关系运算符
>
<
==
!=
>=
<=
泊尔类型:
bool
值域:
true 1
false 0
注意: 在C语言中:非0值为逻辑真值
0值为逻辑假值
6.3 逻辑运算符(重点)
&& : 逻辑与 既..又.. (全真为真,一假为假)
|| : 逻辑或 要么..要么.. (一真为真,全假为假)
! : 逻辑非 真取非得假,假取非得真
注意:截断特性(从左往右计算)
1.逻辑与一假为假,左边为假,右边不再计算
2.逻辑或一真为真,左边为真,右边不再计算
6.4 位运算符(重点)
& : 按位与 (与0得0、与1不变)
| : 按位或 (或1得1、或0不变)
^ : 按位异或 (相同为0、相异为1) num ^ num == 0 num ^ 0 == num
~ : 按位取反
>> : 右移
缩小移动的数字 : 除以2^n
<<:左移
放大移动的数字 : 乘以2^n
让一个字节第n位(从右往左第n位)置1:
num = num | (1 << n);
让一个字节第n位(从右往左第n位)置0:
num = num & ~(1 << n);
编写程序判断一个数二进制中有多少位1?
两个数交换(三种数据交换得方法):
1.使用临时中间变量完成交换
2.使用算术运算完成交换
3.异或可以完成数据交换
6.5 特殊运算符(三目运算符)
表达式1 ? 表达式2 : 表达式3;
表达式1为真,执行表达式2,否则执行表达式3