代码风格:
1、缩进:(tab)是8个字符的大小,因此缩进也因是8个字符的大小;
2、花括号,对于花括号的放置并没有太多技术上的要求;
3、标识符的命名规则:标识符不可以是关键字,只能由字母、数字、下划线组成,第一个字母必须是下划线或字母;区分字母的大小写;
4、注释:注释是可以有助于看成一种工作习惯,但过量的注释会带来工作负担同时还会影响工作效率;第一种方式://第二种方式:/* */
数据类型分类(C语言共32个关键字):
基本类型:整型(int、long、short)字符型(char)实型(float、double)
构造类型:数组类型、结构类型、联合类型、枚举类型(enum)
指针类型:(char *、int *、int **)
整型:
int 打印格式:
%d(有符合的十进制数)
%o(输出8进制的int类型)
%x(输出小写的16进制的int类型)
%X(输出大写的16进制的int类型)
%u(输出一个无符号的10进制的类型)
short 2字节 long 4字节 longlong 8字节
注意当一个小类型的变量赋值给一个大类型的变量时数据不会丢失但是当一个大类型的变量赋值给小类型时高位可能会丢失;
字符型:
char 打印格式:
%c(输出一个占位符的字符可大小写)
小写字母与大写字母相差32,小写a对应ASI为97;大写A则为65;
浮点型:
float(4字节)打印格式:
%f(输出一个占位符的字符,表示输出一个浮点型类型,默认保留6位小数)
%.2f(默认保留2位小数,同时会四舍五入)
double(8字节)打印格式:
%lf(输出一个双精度浮点类型,默认保留6位小数)
变量和常量:
常量:表示在程序中其值不会再改变的量包括:整型、实型、字符型、字符串型;
变量:其值可以改变,变量命名符合用户标识符命名规则,变量在编译时为其分配相应的内存地址;必须有相对应的数据类型;
const:当我们去赋值时是不可报错的,其值已经固定好了;可以将变量转换为常量
auto:可以省略,自动添加;
运算符的种类、运算优先级和结合性:
1、算术运算符:
运算符 | 术语 | 示例 | 结果 |
+ | 正号 | +3 | 3 |
- | 负号 | -3 | -3 |
+ | 加 | 10 + 5 | 15 |
- | 减 | 10 - 5 | 5 |
* | 乘 | 10 * 5 | 50 |
/ | 除 | 10 / 5 | 2 |
% | 取模(取余) | 10 % 3 | 1 |
++ | 前自增 | a=2; b=++a; | a=3; b=3; |
++ | 后自增 | a=2; b=a++; | a=3; b=2; |
-- | 前自减 | a=2; b=--a; | a=1; b=1; |
-- | 后自减 | a=2; b=a--; | a=1; b=2; |
2、赋值运算符
运算符 | 术语 | 示例 | 结果 |
= | 赋值 | a=2; b=3; | a=2; b=3; |
+= | 加等于 | a=0; a+=2; | a=2; |
-= | 减等于 | a=5; a-=3; | a=2; |
*= | 乘等于 | a=2; a*=2; | a=4; |
/= | 除等于 | a=4; a/=2; | a=2; |
%= | 模等于 | a=3; a%2; | a=1; |
3、比较运算符
运算符 | 术语 | 示例 | 结果 |
== | 相等于 | 4 == 3 | 0 |
!= | 不等于 | 4 != 3 | 1 |
< | 小于 | 4 < 3 | 0 |
> | 大于 | 4 > 3 | 1 |
<= | 小于等于 | 4 <= 3 | 0 |
>= | 大于等于 | 4 >= 1 | 1 |
4、逻辑运算符
运算符 | 术语 | 示例 | 结果 |
! | 非 | !a | 如果a为假,则!a为真; 如果a为真,则!a为假。 |
&& | 与 | a && b | 如果a和b都为真,则结果为真,否则为假。 |
|| | 或 | a || b | 如果a和b有一个为真,则结果为真,二者都为假时,结果为假。 |
5、运算符优先级
优先级 | 运算符 | 名称或含义 | 使用形式 | 结合方向 | 说明 |
1 | [] | 数组下标 | 数组名[常量表达式] | 左到右 | -- |
() | 圆括号 | (表达式)/函数名(形参表) | -- | ||
. | 成员选择(对象) | 对象.成员名 | -- | ||
-> | 成员选择(指针) | 对象指针->成员名 | -- | ||
2 | - | 负号运算符 | -表达式 | 右到左 | 单目运算符 |
~ | 按位取反运算符 | ~表达式 | |||
++ | 自增运算符 | ++变量名/变量名++ | |||
-- | 自减运算符 | --变量名/变量名-- | |||
* | 取值运算符 | *指针变量 | |||
& | 取地址运算符 | &变量名 | |||
! | 逻辑非运算符 | !表达式 | |||
(类型) | 强制类型转换 | (数据类型)表达式 | -- | ||
sizeof | 长度运算符 | sizeof(表达式) | -- | ||
3 | / | 除 | 表达式/表达式 | 左到右 | 双目运算符 |
* | 乘 | 表达式*表达式 | |||
% | 余数(取模) | 整型表达式%整型表达式 | |||
4 | + | 加 | 表达式+表达式 | 左到右 | 双目运算符 |
- | 减 | 表达式-表达式 | |||
5 | << | 左移 | 变量<<表达式 | 左到右 | 双目运算符 |
>> | 右移 | 变量>>表达式 | |||
6 | > | 大于 | 表达式>表达式 | 左到右 | 双目运算符 |
>= | 大于等于 | 表达式>=表达式 | |||
< | 小于 | 表达式<表达式 | |||
<= | 小于等于 | 表达式<=表达式 | |||
7 | == | 等于 | 表达式==表达式 | 左到右 | 双目运算符 |
!= | 不等于 | 表达式!= 表达式 | |||
8 | & | 按位与 | 表达式&表达式 | 左到右 | 双目运算符 |
9 | ^ | 按位异或 | 表达式^表达式 | 左到右 | 双目运算符 |
10 | | | 按位或 | 表达式|表达式 | 左到右 | 双目运算符 |
11 | && | 逻辑与 | 表达式&&表达式 | 左到右 | 双目运算符 |
12 | || | 逻辑或 | 表达式||表达式 | 左到右 | 双目运算符 |
13 | ?: | 条件运算符 | 表达式1? 表达式2: 表达式3 | 右到左 | 三目运算符 |
14 | = | 赋值运算符 | 变量=表达式 | 右到左 | -- |
/= | 除后赋值 | 变量/=表达式 | -- | ||
*= | 乘后赋值 | 变量*=表达式 | -- | ||
%= | 取模后赋值 | 变量%=表达式 | -- | ||
+= | 加后赋值 | 变量+=表达式 | -- | ||
-= | 减后赋值 | 变量-=表达式 | -- | ||
<<= | 左移后赋值 | 变量<<=表达式 | -- | ||
>>= | 右移后赋值 | 变量>>=表达式 | -- | ||
&= | 按位与后赋值 | 变量&=表达式 | -- | ||
^= | 按位异或后赋值 | 变量^=表达式 | -- | ||
|= | 按位或后赋值 | 变量|=表达式 | -- | ||
15 | , | 逗号运算符 | 表达式,表达式,… | 左到右 | -- |
不同类型间的数据转换:
1、自动转换:遵循一定的规则,由编译系统自动完成;
2、强制类型转换(不会四舍五入):使用强制类型转换运算符,将一个变量或表达式转化成所需的类型;