目录
前言
八月二十七号笔记
一、自增自减
1.自增和自减概念
自增和自减是两个算术运算符,为一元运算符它的作用是使变量加一或减一,这两个运算符只能对变量进行运算。
2.规则
++i,--i 在使用i之前,先使i的值加/减1,先增减、后运算
i++,i-- 在使用i之后,是i的值加/减1,先运算、后增减
++i是先执行i=i+1,再使用i的值;而i++是先使用i的值,再执行i=i+1。
例如:
建议谨慎使用++和--运算符,只用最简单的形式,即i++,i--,且把它们作为单独的表达式。
结合性:自右向左
3.说明
1.自增、自减运算,常用再循环语句中,使循环变量加(或减)1;以及指针变量中,使指针指向下(或上)一个地址。
2.自增、自减运算符,不能用于常量和表达式。
例如:8++、--(x+y)都是非法的。
二、赋值
1.赋值运算符及其表达式
赋值运算符:“=”
赋值表达式是由赋值运算符连接左边一个变量和右边一个表达式构成,即
【变量】=【表达式】; 将右边表达式的值赋值给左边的变量得到改变变量值的一个操作
2.规则
优先级:!>算术>关系>&&和\\>赋值
结合性:自右向左
表达式可以是任意的表达式,包括算术表达式、逻辑表达式等,表达式甚至可以是一个变量或另一个赋值表达式。
注意:
格式左边一定是一个变量,格式右边可以是任意的表达式。表达式计算结果的数据类型应当和变量的数据类型相同。
3.应用
如果表达式值的类型,与被赋值变量的类型不一致,但都是数值型或字符型,系统自动地将表达式的值转换成被赋值变量的数据类型,然后再赋值给变量。
如图所示,j为整型,2.5为double型,将2.5赋值给j,则将双精度2.5转化成整型即2赋值给j,因此,最后j=2。
4.复合赋值运算符
复合赋值运算符是由赋值运算符之前再加一个双目运算符构成的。
优先级:与=是同一优先级。
结合性:自右向左
三、逗号
1.逗号运算符
逗号运算符:,
作用:将几个表达式隔开并以此计算。
【表达式1】,【表达式2】,…【表达式n】
2.规则
优先级:最低
结合性:自左向右
整个表达式的值:最后一个表达式的值
注意:C语言常用逗号作为分隔符
四、条件
1.条件运算符
①概念
条件运算符: ?:
作用:判断一个逻辑表达式的结果,如果为真则制定执行某一个表达式,如果为假则指定执行另外一个表达式。条件表达式的实质就是起程序控制作用。
表达式1?表达式2:表达式3
②求值规则
先求解表达式1的值,若为真(非0),求解表达式2,并把表达式2的值作为整个条件表达式的值;若表达式1的值为假(0),求解表达式3,并把表达式3的值作为整个条件表达式的值。
优先级:逻辑>条件>赋值
结合性:自右至左
五、求字节数
1.运算符
sizeof()
sizeof()运算符是一个单目运算符,用于计算一个某种类型的运算量所占用的字节数。
2.使用形式
sizeof(类型标识);
sizeof(变量名);或 sizeof 变量名;
六、相生相成
1.类型转换
- 自动类型转换:在运算时不必用户干预,系统自动进行的类型转换。
- 强制类型转换:当自动类型转换不能实现目的时,可以用强制类型转换。
2.自动类型转换
①赋值转换
- 浮点型赋值给整型,结果将舍弃浮点数小数部分。
- 整数赋值给浮点数,数值不会发生变化,结果以浮点数的方式存在。
- 字符型赋值给整型,数值不会发生变化,但以整型的方式存储,内存空间变大。
- 整型赋值给字符型,只把整型变量低8位赋值给字符型变量。
- 双精度浮点数赋值给单精度浮点数,有效位会减少,丢失的部分四舍五入。
②运算转换
C语言允许整型、实型、字符型数据进行混合运算。在进行运算时,不同类型的数据要先转换成同一类型,然后再进行运算。转换过程是C语言编译器自动进行的。
- 转换按数据占用字节数增加的方向转换,例如int类型和short类型的变量进行计算时,会把short类型转换成int类型之后再进行计算。
- 浮点数运算都是按照双精度进行的,float类型的变量会先转换成double类型再进行计算。
3.强制类型转换
强制类型转换是由程序员通过类型说明符实现的,通过强制类型转换可以将一种类型的变量强制转化为另一种类型。
(类型说明符)【表达式】
- 类型说明符和表达式都必修加括号,如果表达式是单个变量则可不加。
- 无论是强制类型转换还是自动类型转换,都不改变其原变量的数据类型。即对一个变量进行强制转换后得到的一个新类型的数据,原来的变量类型是不变的。