c语言表达式1&&3,第03天C语言(00)笔记总结

01-运算符-基本概念

优先级(1~15 最高1则为() )、结合性(从左至右【x+y-z】、从右至左【number=10】)

02-算术运算符

+、-、*、/、%

注意 : 1)取模运算只能用于整数、2) 取模运算的正负性 取决于左边的操作数、3)如果取模运算的左边小于右边, 那么结果就是左边

03-算术运算符-优先级和结合性

算术运算符它是左结合性,从左至右计算

算术运算符中 * / & 优先级大于 + -

04-类型转换

自动类型转换(隐式转化) int number = 10.8; // 输出10

强制类型转换(显示转换) int number1 = (int)10.8;

自动类型提升

算术运算注意点 : 参与运算的操作数是什么类型, 那么计算出来的结果就是什么类型 double result = (double)1 / 2; // 1.0 / 2.0 == 0.5;

05-赋值运算符

最简单的赋值运算,将等号的值赋值给等号左边的变量

赋值运算符的结核性: 从右至右

复合运算会先计算等号右边的值,然后再用计算出来的结果 和 等号左边的值进行计算

06-自增自减

自增: 如果想让某一个数加1 可以使用自增

自减: 如果想让某一个数减1 可以使用自减

自增自减 写在前面和后面的区别

如果++ 写在变量的前面, 那么会先将变量自增再用自增之后的结果参与运算

如果++ 写在变量的后面, 那么会先将变量的值参与运算 再将变量自增

总结一句话 : ++在前, 先自增再运算, ++在后, 先运算再自增

常量是不可以自增的

07-自增自减-拆分

int a = 10; int b = a++; (拆分: int b = a; a = a + 1;) 结果 a = 11 b = 10;

int a = 10; int b = ++a; (拆分: a = a + 1 , b = a;) 结果 a = 11 b = 11;

08-sizeof运算符

sizeof 可以用来计算一个变量或一个常量、一个数据类型所占的内存字节数

注意 : sizeof是一个运算符, 不是一个函数

利用sizeof计算的格式 : sizeof(变量/常量/数据类型);

如果利用sizeof计算常量/变量, 那么可以省略() -- int number = sizeof 10;

注意 : 如果利用sizeof计算数据类型, ()不能省略

09-逗号运算符

只要运算符 那么一定会有运算结果, 逗号运算符也不例外.

逗号运算符的结果是 最后一个表达式的结果 int result = ((a = a + 5), (b = b +1)); // 结果 a = 10 + 5 = 15 , b = 5 + 1 = 6;

10-关系运算符

/*

关系运算符:

>

<

>=

<=

==

!=

关系运算符的返回值只有两种,要么真,要么假,1(真)和0(假)

int result = a > b; // 吗? 大于, 真,非0即真.

*/

关系运算符注意点

关系运算符也有优先级, > < >= <= 优先级大于 == != 【int result = 1 == 10 > 5 ;】

算术运算符的优先级 大于 关系运算符 【int result = 1 + 1 < 2 + 2;】

关系运算符的结合性 : 从左至右 【int result = 10 > 3 > 1;】

如果优先级和结合性同时存在, 先优先级 再 结合性 【int result = 10 + 1 > 5 + 4 == 3 > 1;】 // 【int result = ((10 + 1) > (5 + 4)) == (3 > 1);】

11-逻辑运算符

/*

逻辑运算符的返回值 只有两种 : 要么真要么假,要么是1(真),要么是假(0)

&& (与运算) 逻辑非结合性 : 从左至右

格式 : 表达式1 && 表达式2

只有表达式1 和 表达式都为 真 的时候, 逻辑与表达式才返回真

如果表达式1 或者 表达式2 中有一个是假, 那么逻辑 与 表达式 返回的结果都是 假

int result = 10 > 8 && 5 > 3; // 1 && 1 = 1;

int result = 10 > 8 && 5 > 8; // 1 && 0 = 0;

口诀 : 一假则假

逻辑与有一个特点 : 一假则假, 所以前面的表达式的值为假, 那么后面的表达式没必要参与运算 【int a = 10; int result = 10 > 18 && a++ > 5;】 0 && 1 = 0 a=10

判断一个范围 (33) && (a<5);

|| (或运算) 逻辑非结合性 : 从左至右

格式 : 表达式1 !! 表达式2

只要表达式1 或者 表达式2 中有一个是 真的,逻辑或表达式返回的值 就是真

只要表达式1 和 表达式2的值都是假, 逻辑或的值才是假

int result = 10 > 8 || 5 > 8; // 1 || 0 = 1

口诀 : 一真则真

【int a = 10;int result = 10 > 18 || ++a > 5;】 0||1 = 1 a= 11

逻辑与 和 逻辑或 的这个特点,称之为逻辑运算符的短路

! (非运算) 逻辑非结合性 : 从右至左

如果表达式是真, 就返回假

如果表达式是假, 就返回真

【int result = !1;】 0

取反

*/

注意点:由于C语言规定 : 任何数值都有真假性, 非0即真, 所有逻辑运算符 可以直接与 数值进行计算

12-三目运算符

三目运算符格式 : 表达式? 结果A : 结果B

结合性 : 从左至右

只要条件表达式 为真 就返回结果A, 如果条件表达式为假, 那么就返回结果B

【int result = (a > b) ? a : b;】 a 大于 b 吗? 如果 a 大于 b 就返回 a, 否则返回b

三目运算符的优先级 : 低于关系运算符 和 算术运算符

/*

1.阅读性比较差

2.性能也比较差

int result = (num1 > num2 ? num1 : num2) > num3 ? (num1 > num2 ? num1 : num2) : num3; // 计算了两次 (num1 > num2 ? num1 : num2)

*/

14-if-基本概念

/*

第一种格式:

if(条件表达式)

{

语句...

}

只要条件表达式 为真, 那么就会执行if后面大括号中的内容

第二种格式:

if (条件表达式)

{

语句...

}else

{

语句...

}

只要条件表达式 为真, 那么就会执行if后面大括号中的内容

如果 条件表达式 不为真, 那么就会执行else后面大括号中的内容

规律 : 两个大括号中的内容, 一定会有一个会被执行

第三种格式:

if (条件表达式1)

{

语句...

}

else if (条件表达式2)

{

语句...

}

else if (条件表达式3)

{

语句...

}

....

else

{

语句...

}

只要 条件表达式1 为真, 那么就会执行if后面大括号中的内容,而其他大括号不会被执行

如果 条件表达式1 不为真,那么就会去判断 条件表达式2 , 如果 条件表达式2 为真就会执行 条件表达式2后面大括号中的内容 其他的else if以此类推.

当前面所有的if, else if 的条件表达式都不为真, 就会执行else后面大括号中的内容

规律:

众多大括号只会执行其中一个

如果执行到后面大括号中的内容,代表前面的所有条件都不满足

第四种格式:

if(条件表达式)

语句...

如果省略if后面的大括号,当条件表达式为真时, 只会执行if后面的第一条语句

第五种格式 : (if嵌套)

if(添加表达式)

{

if(添加表达式)

{

}

}

else if(添加表达式)

{

if(添加表达式)

{

}

}

*/

15-if-练习1

1. 从键盘输入一个整数,判断其 是不是偶数, 如果是偶数就输出YES,否则输出NO

2. 接收用户输入的1~7的整数, 根据用户输入的整数, 输出对应的星期几

3.接收用户输入的一个整数 month代表月份, 根据月份输出对应的季节

16-if-练习2

4. 键盘输入两个整数, 判断大小后输出较大的那个数

5. 键盘输入3个整数, 判断大小后输出较大的那个数

5. 从键盘输入3个整数,排序后输出 (利用num1 和 num2 进行比较, 如果 num1 小于 num2 交换两个变量的值 -- 利用num1 和 num3 进行比较, 如果 num1 小于 num3 交换两个变量的值, 利用num2 和 num3 进行比较, 如果 num2 小于 num3 交换两个变量的值)

17-if-注意点

以后如果要判断其中一个变量 是否等于某一个值, 建议把常量写前面, 变量写后面 【if (18 == age){语句...}】

if 如果省略大括号, 就会管理离他最近的一条语句, 二; 是一条空语句 【if (0);printf("lyh");】

如果要在if后面定义变量, 那么必须写上大括号【int number = 19;printf("number = %i\n",number);】

如果if ,else省略大括号, 那么else会匹配离他最近的if

18-石头剪子布

#include

arc4random_uniform(3); // arc4random_uniform 方法会根据传入的整数 生成一个随机数

生成的值 就是 0~[N-1]的值

0~2

快捷键 :

上下移动 : command + option + ]/[

左右移动 : command + ]/[