C语言学习笔记 Day5(运算符)

Day5 内容梳理:

1、Chapter 3  运算符:3.1 运算符分类,3.2 运算符优先级,3.3 类型转换

其中,比较易混淆的前后自增减运算符(++a/a++/--a/a--)辨析在3.1中。

Chapter 3  运算符

3.1 运算符分类

(1)分类表

类型定义/作用符号补充
算术运算符处理四则运算

+  -  * /  加减乘除

%    取余

++a  前自增   

a++  后自增

--a    前自减   

a--     后自减

*1 除号:

整型 / 整型 = 整型;

浮点型 / 整型 = 浮点型

*2  自增减运算符之间的区别

取余:

比如10%3 = 1

0不能作为除数

赋值运算符

将表达式的值赋给变量

=

+=  -=  *=  /=  %= 

a+=5 等同于 a = a+5,其他的同理。
比较运算符比较表达式, 表达式为真则返回1,为假则返回0

==      !=

<     <=     >      >=

*3 C语言中,用数字1来表示“真”,用数字0来表示“假”

逻辑运算符根据表达式的值,返回真值1或假值0

! 非

&& 且

|| 或

非:

*4  C语言中,“!”用于反转真假。在真值前加“!”会让其变为假值0;假值同理。

&&:

以 A && B 为例,如果A为假,则不会再运行B,而是直接返回0

位运算符

处理数据的位运算(后续学到这部分了,再补充上)

sizeof运算符

用于求字节数的长度格式:sizeof(变量)

(2)要点辨析:

*1  被除数的数据类型决定着结果的类型

*2  四类自增减运算符的区别

相同点:不影响变量本身的自增自减,但是会影响表达式的运算结果。

不同点:将自增减代码拆成两行代码,各自的顺序不同。

前自增  ++a后自增  a++前自减  --a后自减  a--
原代码int b = ++a*10;int b = a++*10;int b = --a*10;int b = a--*10;
代码拆开后的顺序

int a++;

int b = a*10;

int b = a*10;

int a++;

int a--;

int b = a*10;

int b = a*10;

int a--;

                代码示例:

*3 & *4  真值“1”和假值“0”

        当表达式为真时,返回数字1;为假则返回数字0;

         另外,C语言中只有0是假值,其余的数字都是真值。

        因此在真值前加上奇数个“!”会得到假值0;偶数个“!”则是1;

3.2 运算符优先级

共分15个档,比较细致,参考视频:05运算符下_哔哩哔哩_bilibili

3.3 类型转换

(1)类型转换的原则:

将占用内存字节数小的类型,转化为占用内存字节数多的类型,以保证精度不降低。系统中自动的转换方向如下。

(2)两种转换方法:

        ①自动转换:

                由编译系统遵循上面的代码转换规则,自动转换。

                例子:浮点数×整数=浮点数

        ②强制类型转换:

                格式:(数据类型) 表达式

                定义:把表达式的运算结果强制转化成所需的数据类型(逆着方向转换)。

                例子:(int)浮点数 × 整数 = 整数

                  通过(int)舍掉小数点后的数,再执行相乘。

二者区别:

强制类型转换就相当于把大型物件硬塞到小盒子里,逆着系统自动的转化方向,从高精度转变为低精度,其表达式的结果不会四舍五入。

自动类型转换则相反。

PS:注意“强制类型转换”的表达式范围

        强制类型转换的表达式范围不同,则结果也不同。即:(int)p * w   ≠   (int) (p*w)

  • 19
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值