输入输出
printf和scanf的使用
printf和scanf输出输入格式
Type | Example |
---|---|
char | %c |
short int | %hd |
int | %d |
long int | %ld |
float | %f |
double | %f |
表达式
算数运算符
常见运算符
运算符 | 意义 |
---|---|
+ | 加法运算符 |
- | 减法运算符,或者负数云算法 |
* | 乘法运算符 |
/ | 除法运算符(整数相除,省略小数) |
% | 模运算符,取余运算符(%两侧均为整数) |
### 运算循序 | |
1> 算术表达式:用算术运算符将数据连接起来的式子,例如 2 + 4,3 * 5等。 |
|
表达式的运算顺序是按照运算符的结合方向 和优先级 进行的。 |
|
2> 结合方向 | |
算术运算符的结合方向从左到右。 | |
3> 优先级 | |
优先级越高,就越先计算,当优先级相同时,参考结合方向。下面是优先级的排序 | |
负值运算符(-) > 乘(*)、除(/)、模(%) > 加(+)、减(-) | |
4> 小括号 | |
如果被()括起来,那么优先级是最高。 | |
### 注意点 | |
1. 自动类型转换, 自动将大类型转换称小类型,会丢失精度 | |
2. 强制类型转换 |
赋值运算符
- 简单赋值运算符
赋值运算符的结合方向:从右到左,而且优先级低于算数运算符 - 复合赋值运算符
+= : 如 a+=2等价于,a = a+2;
-= : 如 a-=2等价于,a = a-2;*
= : 如 a*
=2等价于,a = a*
2;
/= : 如 a+=2等价于,a = a+2;
%= : 如 a+=2等价于,a = a+2;
自增和自减
- ++
- 先加,后用
++a
- 先用,后加
a++
- 先加,后用
- –
- 先减,后用
--a
- 先用,后减
a--
- 先减,后用
sizeof
用来计算一个变量或者一个常量、一种数据类型所占的内存字节数
逗号运算符
- 主要用于连接表达式
- 从左到右依次计算
- 整个都好运算符,是最后一个表达式的值
关系运算符
运算符 | 意义 |
---|---|
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
== | 等于 |
!= | 不等于 |
关系运算符的结果只有两种,条件成立结果是“1”,不成立为“0”;
优先级
- <、<=、>、>=优先级大于 ==、!=优先级
- 结合方向,“从左到右”
- 优先级低于算术运算符
逻辑运算符
运算符 | 意义 | 计算规则 |
---|---|---|
&& | 与 | 两个为真才为真 |
|| | 或 | 一个为真就为真 |
! | 非 | !真为假,!假为真 |
三目运算符
- 条件运算符
表达式1?表达式2:表达式3;
表达式1为真,执行表达式2,反之执行表达式3
控制结构
3种流程控制结构
- 顺序结构:默认的流程结构。
- 选择结构:对给定的条件进行判断,再根据判断来决定执行哪一段代码。
- 循环结构:在给定条件成立的情况下,反复执行莫一段代码。
选择结构
- if(){}else{}
- switch(){case :}
循环结构
while
while(条件){ 语句1; …… } //条件成立(为真),就执行{}中内容,条件不成立,就不执行
do-while
do{ 语句1; }while(条件); // 先执行一遍{}中内容,再判断'条件'是否成立,成立继续执行,不成立,不执行。
for
```
/*
执行循序:初始化表达式(只在开始的时候执行一次)
循环条件表达式(返回值只有两种,真 或 假)
2返回为真时,执行{}中内容。为假时,退出循环
执行一次{}后,执行“循环后的操作表达式”
再执行第2步,循环下去。
*/
for(初始化表达式;循环条件表达式;循环后的操作表达式){
执行语句;
}
```
- break和continue
break常使用与switch和循环结构中,用于跳出switch或循环
continue常用于循环结构中,用于跳出本次循环