C Primer Plus 第5章——第二篇

news2024/9/21 0:41:59

你该逆袭了

第5 章:重点摘录

  • 三、表达式和语句
    • 1、表达式
    • 2、语句
      • (1)副作用 和 序列点
        • (a)副作用
        • (b)序列点
          • 1、完整表达式
    • 3、复合语句(块)
  • 四、类型转换
    • 1、强制类型转换运算符
    • 2、总结:C的一些运算符
  • 五、带参数的函数
  • 六、关键概念
    • 1、运算符的特性
    • 2、算数运算符要求
  • 七、本章小结

三、表达式和语句

1、表达式

(1)表达式 由 运算符 和 运算对象 组成。
(2)子表达式:c / d 是 a * (b + c / d) / 20 的 子表达式。
(3)每个表达式都有一个值。
(4)x = ++q % 3 是 表达式。
(5)6 + (c = 3 + 8) 是 表达式。
在这里插入图片描述

2、语句

C 把 末尾加上一个分号 的表达式都看作是一条语句(即,表达式语句)。
一条完整的指令不一定是一条语句。

8;
3 + 4;
++x;

x = 6 + (y = 5);  
// 该语句中的子表达式 y=5 是一条完整的指令,但是它只是语句的一部分。
// 因为一条完整的指令不一定是一条语句,所以 分号 用于识别在这种情况下的语句(即,简单语句)。

在这里插入图片描述

(1)副作用 和 序列点

(a)副作用

对 数据对象 或 文件 的修改。
在这里插入图片描述

(b)序列点

是程序执行的点,在该点上,所有的副作用都在进入下一步之前发生。在 C 语言中,语句中的分号标记了一个序列点。意思是:在一个语句中,赋值运算符、递增运算符、递减运算符对 运算对象 做的改变必须在程序执行下一条语句之前完成。后面会讨论:一些运算符也有序列点。另外,任何一个完整表达式的结束也是一个序列点。
在这里插入图片描述

1、完整表达式

指:这个表达式不是另一个更大表达式的子表达式。
例如:表达式语句中的表达式和while循环中的作为测试条件的表达式,都是完整表达式。

在这里插入图片描述
在这里插入图片描述

3、复合语句(块)

指:用花括号括起来的一条或多条语句,复合语句也称为 块。

四、类型转换

总结:
在 C语言中,许多类型转换都是 自动进行 的。

当 char 和 short 类型出现在 表达式里 或者 作为函数的参数(函数原型除外)时,都会被升级为 int 类型;float 类型 在函数参数中时,会被升级为 double 类型。

在 K&R C (不是 ANSI C)下,表达式中的 float 也会被升级成 double 类型。
当把一种类型的值赋给另一种类型的变量时,值将被转换成与变量的类型相同。
当把较大类型转换成较小类型时,(如 ,long 转换成 short ,或 double 转换成 float),可能会丢失数据。
根据本章介绍的规则,在混合类型的运算中,较小类型会被转换成较大类型。

(1)当类型转换出现在表达式时,无论是 unsigned 还是 signed 的 char 和 short 都会被自动转换成 int,如有必要会被转换成 unsigned int 。(特殊情况见下图)
(2)当作为 函数参数传递时,char 和 short 被转换成 int,float 被转换成 double。
在这里插入图片描述

在这里插入图片描述
(3)如果目标类型是一个 整形,且待赋值的值是 浮点数,该行为是 未定义 的。

#include <stdio.h>

int main()
{
	//如果目标类型是一个 整形,且待赋值的值是 浮点数,该行为是 未定义 的。

	printf("%d\n", -23.5);  //0
	printf("%d\n", 23.12);  //1374389535
}

(4)当浮点型被降级为整数类型时,原来的浮点值会被截断。

#include <stdio.h>

int main()
{
	//当浮点型被降级为整数类型时,原来的浮点值会被截断。

	printf("%d\n", (int)22.15);    //22
	printf("%d\n", (int)-22.15);   //-22
    
	return 0;
}

在这里插入图片描述
在这里插入图片描述

1、强制类型转换运算符

(int)22.38

2、总结:C的一些运算符

在这里插入图片描述
在这里插入图片描述

五、带参数的函数

#include <stdio.h>

void pound(int n);      // ANSI 函数原型申明

int main()
{
	int times = 5;
	char ch = '!';     //ANSII 码是 33
	float f = 6.0f;

	pound(times);      //int 类型的参数
	pound(ch);         
	pound(f);          

	return 0;
}

void pound(int n)
{
	while (n-- > 0)
		printf("#");
	printf("\n");
}

在这里插入图片描述
形参,实参,函数调用

六、关键概念

在这里插入图片描述

1、运算符的特性

对象的数量、优先级、结合律
如果运算符的优先级相等,由结合律(从左往右 或者 从右往左)决定求值顺序。

2、算数运算符要求

运算对象都是相同类型的。因此,C 会进行自动类型转换。尽管如此,不要养成依赖自动类型转换的习惯,应该显示选择合适的类型或使用强制类型转换。这样,就不用担心不必要的自动类型转换。

七、本章小结

在这里插入图片描述
在这里插入图片描述

微软雅黑字体
黑体
3号字
4号字
红色
绿色
蓝色

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1977527.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

修改 WSL 安装的子系统的位置,节约C盘空间

问题描述 由于 WSL 玩了一阵子&#xff0c;发现C盘的磁盘空间快没了&#xff0c;如下图所示 感觉以后还是不要磁盘分区了&#xff0c;全部在C盘也没什么不好的。 挪动子系统方法 如下图所示&#xff0c;为了方便演示&#xff0c;我们安装了 ubuntu 子系统&#xff0c;并且打…

快讯 | AI牙医震撼登场:15分钟完成牙冠准备,速度超人类8倍!

在数字化浪潮的推动下&#xff0c;人工智能&#xff08;AI&#xff09;正成为塑造未来的关键力量。硅纪元视角栏目紧跟AI科技的最新发展&#xff0c;捕捉行业动态&#xff1b;提供深入的新闻解读&#xff0c;助您洞悉技术背后的逻辑&#xff1b;汇聚行业专家的见解&#xff0c;…

计算几何 点乘 两点间距离 两向量夹角

点乘 点乘&#xff08;也称为内积、标量积或数量积&#xff09;是线性代数中两个向量之间的一种运算&#xff0c;其结果是一个标量&#xff08;即一个单一的数&#xff0c;而不是向量&#xff09;。对于两个n维向量a(a 1 ,a 2 ,…,a n )和b(b 1 ,b 2 ,…,b n )&#xff0c;它们…

翻译: 梯度下降 深度学习神经网络如何学习一

在上一节影片里我讲解了神经网络的结构 首先我们来快速回顾一下 在本节影片里&#xff0c;我们有两个目标 首介绍梯度下降的概念 它不仅是神经网络工作的基础 也是很多其他机器学习方法的基础 然后我们会研究一下这个特别的网络是如何工作的 以及这些隐藏的神经元层究竟在寻找什…

【RDMA项目】如何使用rdma-core进行调用开发一个实战项目

RDMA (Remote Direct Memory Access) 是一种网络协议&#xff0c;可以在计算节点之间实现高效的内存数据传输&#xff0c;而无需CPU的干预。rdma-core 是 RDMA 的一个用户空间库&#xff0c;提供了一些简单易用的接口来使用 RDMA 功能。 开发了一套高级 RDMA&#xff08;远程直…

浅谈Trie树算法(c++)

文章目录 于是他错误的点名开始了题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示思路AC代码 01Trie求n个数两两异或的最大值AC代码 Nikitosh 和异或思路AC代码 The XOR-longest Path思路AC代码 又称字典树&#xff0c;用边来代表字母&#xff0c;而从根结…

《最终幻想14》手游版已获准在中国发行

上个月&#xff0c;有传言称史克威尔和腾讯正在合作开发前者大获成功的MMORPG《最终幻想14》的手机版。Niko Partners分析师丹尼尔艾哈迈德在推特上提到&#xff0c;中国国家新闻出版署已批准发行新一批进口游戏&#xff0c;其中包括《最终幻想14》的手机版&#xff0c;名为《最…

AI智能名片小程序:匹配法则下的粉丝经济新探索

摘要&#xff1a;在数字化时代&#xff0c;企业与消费者之间的互动方式正经历着前所未有的变革。AI智能名片小程序作为这一变革中的新兴产物&#xff0c;不仅重塑了传统商务交流的场景&#xff0c;更在匹配法则的指导下&#xff0c;深刻影响着品牌与粉丝关系的构建与维护。本文…

网络安全数字化转型

1. 背景介绍 在当今数字化浪潮席卷全球的背景下&#xff0c;推行数字化网络安全建设显得尤为迫切与重要&#xff0c;这主要根植于两大核心驱动力&#xff1a;实战挑战的严峻性与行业发展的迫切需求。 1.1. 实战难题的迫切应对 随着信息技术的飞速发展&#xff0c;网络…

全球汽车用粉末涂料市场规划预测:2030年市场规模将接近199亿元,未来六年CAGR为4.3%

一、引言 随着全球汽车行业的持续发展&#xff0c;汽车用粉末涂料作为车辆涂装的重要材料&#xff0c;其市场重要性日益凸显。本文旨在探索汽车用粉末涂料行业的发展趋势、潜在商机及其未来展望。 二、市场趋势 全球汽车用粉末涂料市场的增长主要受全球汽车产量增加、消费者对…

OpenCV||超详细的几何变换

2D图像几何变换的33矩阵&#xff1a; 图像常见的几何变换&#xff1a; 图像来源&#xff1a;《OpenCV 4.5计算机视觉开发实战&#xff1a;基于Python》作者&#xff1a;朱文伟 李建英&#xff1b; 1. 平移&#xff08;Translation&#xff09; 在OpenCV中&#xff0c;平移不是…

如果你感到焦虑、精神内耗,那就跑步去吧!

点击上方△腾阳 关注 转载请联系授权 你好&#xff0c;我是腾阳。 深夜里&#xff0c;你是否辗转反侧、思绪万千却难以入眠&#xff1f; 面对工作截止日期压力山大、心力交瘁&#xff0c;但总提不起神&#xff0c;工作效率低下&#xff1f; 人际交往中&#xff0c;被误解和…

windows 下使用MSYS2编译ffmpeg

1. 下载ffmpeg ,最新源码下载FFmpeghttps://ffmpeg.org/ 2.下载MSYS2,并安装(正常操作步骤) MSYS2Software Distribution and Building Platform for Windowshttps://www.msys2.org/3. 安装好MSYS2后,配置编译环境 打开mingw64.e

Python 进度条:告别枯燥等待,让你的程序动感十足!

在日常编程中&#xff0c;我们经常会遇到需要处理耗时任务的情况&#xff0c;例如文件下载、数据处理等等。看着程序运行&#xff0c;却只能干巴巴地等待&#xff0c;实在令人心焦。 别担心&#xff01;今天就来教你如何使用 Python 创建炫酷的进度条&#xff0c;告别枯燥等待…

董明珠:格力正在开发“不要电”的空调!

8月2日&#xff0c;格力电器在河北召开“格力冰洗生活电器战略发布会”。格力电器董事长兼总裁董明珠在现场发表讲话&#xff0c;透露格力正在开发一个“不要电”的空调。据悉&#xff0c;2012年格力就开始开发这个技术。 董明珠表示&#xff0c;现在的光伏发电需要通过逆变器…

横屏无水印风景视频素材去哪里找啊?横屏无水印素材库分享

在进行视频创作和编辑时&#xff0c;拥有高质量的横屏无水印风景视频素材非常关键&#xff0c;尤其是当你打造旅行记录、自然纪录片或是背景视频等内容时。这类素材不仅能显著提升你的作品的视觉效果&#xff0c;还能加强其感染力。然而&#xff0c;许多创作者在寻找合适的风景…

每日学术速递8.4

1.Sparse vs Contiguous Adversarial Pixel Perturbations in Multimodal 标题&#xff1a; Models: An Empirical Analysis 多模态模型中的稀疏与连续对抗性像素扰动&#xff1a;实证分析 作者&#xff1a; Cristian-Alexandru Botocan, Raphael Meier, Ljiljana Dolamic 文…

eslint配置忽略目录和文件

本部分选自《基于vite构建vue3开发环境——eslint整合》。 默认配置下&#xff0c;咱们引入第三方的svg库js文件也会被eslint检查&#xff1a; 在eslint.config.js中增加配置&#xff1a; 注意 这里不能写成./src/assets&#xff0c;除了忽略整个目录&#xff0c;也可以通过通配…

golang命名异常 error var Xxx should have name of the form ErrFoo (ST1012) 解决方法

异常原因分析 这个提示通常发生在我们使用var 定义一个变量来接收 error异常信息时的变量名称不规范所致。 其实这里的异常信息“ error var Xxx should have name of the form ErrFoo (ST1012)” 这个提示里面也已经提醒了" 变量 Xxx 的名称格式应该为 ErrFoo ", …

网络编程相关

关于ipv4和v6 ipv4小细节-------公网和私有地址 端口 InetAddress 协议 UDP、TCP UDP通信程序 发送&#xff08;单播&#xff09;&#xff1a; 接收&#xff08;单播&#xff09;&#xff1a; UDP三种通信方式 单播和广播代码几乎相同&#xff0c;就是将&#xff1a; InetAddr…