细思c语言之《c语言程序_现代方法 第2版》——读书心得(3)

news/2025/1/22 18:59:04/

c语言程序_现代方法 第2版

  • 第四章 表达式
    • 4.1 算术表达式
    • 4.2 赋值运算符
    • 4.3 表达式求值的顺序
  • 第五章 选择语句

第四章 表达式

4.1 算术表达式

(1)“由实现定义”的行为:c语言故意对c语言的部分内容未加定义,并认为其细节可以由“实现”来具体定义,所谓实现是指定在特定的平台上编译、链接和执行所需要的软件。因此,根据现实不同程序的行为可能会稍有差异,C89运算符/和运算符%对负数的行为就是一个有实现定义行为的例子。
(2)运算符的优先级和结合性来实现运算的。
(3)左结合:从左向右结合。右结合:从右向左结合。

4.2 赋值运算符

(1)副作用:通常我们不希望运算符修改它们的操作数,数学中运算符就是如此,表达式i+j不会改变i或j的值,只是计算出i加j的值。
大多数c语言运算符不会改变操作数的值,但是也会有一些改变,由于这类运算符所做的不再仅仅是计算出值,所以称他们有副作用,简单赋值运算符是已知的第一个有副作用的运算符,它改变了运算符的左操作数,表达式i=0求值产生的结果为0,并(作为副作用)把0赋值给i。
(2)左值:左值表示存储在计算机内存中的对象,而不是常量或计算的结果。变量是左值。

4.3 表达式求值的顺序

(1)有了运算优先级和结合性,并不能计算确定的值,还要依靠求值的顺序。
(2)未定义的行为:在表示中,既在某处访问变量的值,又在别处修改它的值是不可取的。这样出现的结果不唯一,不同编译器给出的编译结果可能是不同的,但这还不是唯一可能发生的事情:首先程序可能无法通过编译,就算通过了编译也可能无法运行,就算运行也有可能崩溃、不稳定或者产生无意义的结果。
我们要尽量避免这样的行为出现,把复杂的表达式变成多个简单的语句。

第五章 选择语句

(1)c89中的布尔值
用int flag=0或1来表示真假
(2)c99中的布尔值
提供了_Bool型来声明布尔变量,是无符号整形变量,但只能赋值1或0;
(3)Switch语句往往比级联式if语句更容易阅读。此外,Switch语句往往比if语句执行速度快。
(4)控制表达式的值和任何一个分支标号都不匹配的话,控制会直接传给Switch语句后面的语句。
(5)需要break语句是由于Switch语句实际上是一种“基于计算的跳转”。对控制表达式求值,控制会跳转到与Switch表达式的值相匹配的分支标号处。分支标号只是一个说明Switch内部位置的标记。在执行完分支的最后一个语句后,程序控制“向下跳转”到下一个分支的第一条语句上,而忽略下一个分支的分支符号。如果没有break语句(或者其他某种跳转语句),控制将会从一个分支继续到下一个分支。


http://www.ppmy.cn/news/10803.html

相关文章

深入探索Flutter性能优化

前言 Flutter 作为目前最火爆的移动端跨平台框架,能够帮助开发者通过一套代码库高效地构建多平台的精美应用,并支持移动、Web、桌面和嵌入式平台。对于 Android 来说,Flutter 能够创作媲美原生的高性能应用,但是,在较…

【Python语言基础】——Python 数据类型

文章目录 一、Python 数据类型一、Python 数据类型 内置数据类型 在编程中,数据类型是一个重要的概念。 变量可以存储不同类型的数据,并且不同类型可以执行不同的操作。 在这些类别中,Python 默认拥有以下内置数据类型: 文本类型: str 数值类型: int, float, complex 序…

重发布-路由策略实验1(1.8)

目标: 1、首先为每个路由器配置环回和每个接口的ip r1: [r1]interface lo0 [r1-LoopBack0]ip add 1.1.1.1 24 [r1-LoopBack0]int gi 0/0/0 [r1-GigabitEthernet0/0/0]ip add 12.1.1.1 24 [r1-GigabitEthernet0/0/0]int gi 0/0/1 [r1-GigabitEthernet0/…

【Kotlin】数字类型 ( 安全转换函数 | 浮点型转整型 )

文章目录一、安全转换函数二、浮点型转整型一、安全转换函数 在 Kotlin 中 , 将 字符串 String 类型 转为 数字类型 , 如果 字符串 代表的数字类型 与 要换转的 数字类型 不匹配 , 就会出异常 ; 如 : 执行如下代码 , 就会报异常 ; 字符串内容是 0.5 , 显然是一个 Double 类…

Educational Codeforces Round 141 (Rated for Div. 2) A ~ C 题解

A. Make it Beautiful 题意 题目链接 给定一个长度为nnn的数组,将该数组重新排列使得数组内的每一个数都不等于其前面的所有数字之和。 思路 首先想到的应该是降序排列,因为所有数都是大于000的,但是因为存在重复的数,比如336…

Java学习(54)Java继承——final关键字的使用

Java继承——final关键字的使用1. final修饰类2. final修饰方法3. final修饰方法内的局部变量4. final修饰成员属性5. final修饰引用数据类型的实例化对象6. final是不能修饰构造方法的7. 小结1. final修饰类 (1) 在Animal类中添加final关键字:public final class …

主机加固对服务器防勒索病毒有哪些好处

​ 近年来,计算机以及互联网应用在中国得到普及和发展,已经深入到社会每个角落,政府,经济,军事,社会,文化和人们生活等各方面都越来越依赖于计算机和网络,电子政务,无纸办…

Springboot中如何优雅的写好controller层代码

前言优雅?看到这个词,我第一反应是什么是优雅?怎么写才算优雅?一千个读者有一千个哈姆雷特,每个人的经验、阅历不同,也许理解就不同。我对优雅的理解很简单,就是简洁有效、容易理解,…