C primer plus 学习笔记 第5章 运算符、表达式和语句

简介: C primer plus 学习笔记 第5章 运算符、表达式和语句

        第5章 运算符、表达式和语句

主要介绍了运算符。

也提了一下循环和参数,后面的章节有详细介绍。


运算符小结:

赋值运算符 :=

算术运算符: + 、 -、 *、 /、% 、-(负号) ++ (自增)、--(自减)

其他运算符:sizeof  求变量字节数。用法 sizeof(float) sizeof mice

                (type)  类型转换。           用法 int x = (int) 1.26;

5.1 循环简介(略)

5.2 基本运算符(operator)

C用运算符(operator)表示算术运算。

5.2.1 赋值运算符: =  (初学时易混淆)

在C语言中,= 不表示相等,而是赋值。

如: i = i+1 表示把i+1的值 赋值给变量i

 如果出现多重赋值: c = b = a = 12; 赋值的顺序是从右往左,先把12赋值给a,然后赋值给b

几个概念:

数据对象(data object):用于储存值的数据存储区域。

左值(lvalue) :用于标识和定位存储位置的标签。

右值(rvalue): 能赋值给可修改左值的量。

5.2.2 加法运算符:+

5.2.3 减法运算符:-

5.2.4 符号运算符:- 和+        // +为(C99)新增,然而似乎+符号并没有什么用,它不会改变运算对象的符号。

5.2.5 乘法运算符 :*

5.2.6 除法运算符:/

 注意整数除法的小数部分会被丢弃(而不是四舍五入),如5/3 = 1。有浮点数的除法会有小数部分。

5.2.7 运算符优先级

5.2.8 优先级和求值顺序

    优先级高的先算,(优先级)相同的按照结合律

由于()优先级最高,我们只要把想先计算的用() 括起来就行了。

5.3 其他运算符

5.3.1 sizeof运算符和size_t 类型

sizeof运算符:以字节为单位返回运算对象的大小

用法 sizeof (int); sizeof n; //类型必须加() ,变量()可以不加

sizeof返回值是一个  size_t  类型的值, 可使用%zd或%u显示size_t类型的值

//size_t 是一个无符号整数类型 ,是用typedef给无符号整数起的别名。

5.3.2 求模运算符: %

(只能)用于整数运算,取余数 (左边除以右边的余数)。

13%5 = 3

5.3.3 递增运算符++

a++; 相当于 a= a+1;

有两种形式前缀++a和后缀a++。

5.3.4 递减运算符--

5.3.5 优先级

++、--优先级较高,只低于()

5.3.6不要自作聪明

不要使用++ --的情形:

1.一个变量出现在一个函数的多个参数中

2.多次出现在一个表达式中

 

5.4 表达式和语句

5.4.1 表达式

表达式 (expression)由 运算符运算对象组成。

例如:

4

4+2

q = 5

q > 3

......

每个表达式都有一个值

5.4.2 语句

语句(statement)是C程序的基本构建模块,

大多数语句都以 ; 结尾。

副作用和表达式  //可帮助理解执行顺序,看不懂就跳过。

副作用(side effect)是对数据对象或文件的修改

states = 50;

的副作用是让state的值为50。 从C语言的角度看,主要目的是对表达式求值,而赋值表达式的副作用是让变量的值改变。

序列点(sequence point)是程序执行的点。 在该点上,所有副作用都在进入下一步之前发生。

在C语言中,分号标记一个序列点。一个完整表达式的结束也是一个序列点。

完整表达式指的是这个表达式不是另一个表达式的子表达式。

5.4.3 复合语句(块)

复合语句块是花括号{}括起来的多条语句。

 

5.5类型转换

当类型不匹配时,C语言会自动进行基本的类型转换。

5.5.1 强制类型转换

通常应该避免自动类型转换。使用强制类型转换可以主动将某个量转换成目标类型。

使用强制类型转换符: (type )

举例:mice = (int)1.6 + (int)1.7;

 

5.6 带参数的函数 (略)


相关文章
|
供应链 安全 搜索推荐
大模型加速零售业重构
【1月更文挑战第19天】大模型加速零售业重构
396 2
大模型加速零售业重构
|
机器学习/深度学习 人工智能 算法
【代数学作业1-python实现GNFS一般数域筛】构造特定的整系数不可约多项式:涉及素数、模运算和优化问题
【代数学作业1-python实现GNFS一般数域筛】构造特定的整系数不可约多项式:涉及素数、模运算和优化问题
272 0
|
7月前
|
IDE Java 开发工具
如何在代码审查中高效地发现数组越界问题?
如何在代码审查中高效地发现数组越界问题?
238 56
|
监控 安全 JavaScript
浅谈移动端设备标识码:DeviceID、IMEI、IDFA、UDID和UUID
场景 : 客户提出一个问题就是把用户的登录记录和设备绑定到一起,就是每个人都是固定的设备(可能是安全因素吧)。一开始想的是回去设备的IMEI号和用户账号绑定起来,结果发现IMEI不对外开发,只能另寻他法,最后通过获取设备序列号作为唯一标识。
浅谈移动端设备标识码:DeviceID、IMEI、IDFA、UDID和UUID
|
关系型数据库 MySQL Docker
docker 安装 mysql 5.7
docker 安装 mysql 5.7
5388 0
|
分布式计算 负载均衡 API
微服务架构设计原则与模式
【8月更文第29天】随着云计算和分布式计算的发展,微服务架构已成为构建大型复杂应用的一种流行方式。这种架构模式将单个应用程序分解成一组小型、独立的服务,每个服务运行在其自己的进程中,并通过轻量级机制(通常是HTTP资源API)进行通信。本文将探讨微服务架构的基本设计原则、常用模式以及如何有效地划分服务边界。
865 4
|
Linux 开发工具 图形学
Unity下实现跨平台的RTMP推流|轻量级RTSP服务|RTMP播放|RTSP播放低延迟解决方案
自2018年起,我们成功实现了Unity环境下的低延迟RTSP|RTMP播放,达到毫秒级延迟,获得业界广泛认可。现已覆盖Windows、Android、iOS与Linux平台的RTMP推送、轻量级RTSP服务及RTSP|RTMP播放。通过高效采集Unity窗口或摄像头数据,并利用原生SDK进行编码与推送,确保了数据传输的高速性。此外,播放器支持多路视频同时播放,适应不同分辨率,并保持长时间运行稳定。更多技术细节和技术博文,请参考相关链接。
627 1
|
前端开发 Java API
阿里云百炼模型入门篇-大语言模型
本文主要介绍如何快速的通过阿里云百炼,带你如何快速入门通义千问系列大语言模型。
2416 6
|
监控 供应链 数据安全/隐私保护
ERP系统中的成本控制与成本降低策略解析
【7月更文挑战第25天】 ERP系统中的成本控制与成本降低策略解析
1019 0
|
监控 算法 数据可视化
现货合约量化系统开发规则指南
开发现货合约量化系统需关注以下要点:1) 多样性数据源的整合与实时性;2) 高效处理实时数据;3) 与交易所接口集成进行订单管理;4) 优化流动性管理及交易成本;5) 强化风险控制和合规性;6) 支持多种交易策略及组合管理;7) 实时监控和报告系统以评估性能和风险。