新人学C 语言 ,各章小节 (二)

本文详细介绍了C语言的基本数据类型(整型、字符型、实型等),展示了如何使用sizeof操作符确定数据长度,以及变量的声明、命名规则。涵盖了运算符的使用,如算术运算、转义字符和优先级,以及自增自减运算符的特性。

第二章基本数据类型与运算
1. C语言数据类型有:基本类型(整型、字符型、实型)、构造
类型(结构体类型、公用体类型、枚举类型)、指针类型和空
类型。
整型又分为段整形、基本整型和长整型三种。整型还可以分为
有符号型和无符号型。实型分为单精度型和双精度型。
C语言并不规定各种类型的数据占用多大的存储空间,具体事
先由编译系统自行决定。为了确定某一种类型数据的长度,可
以利用运算符sizeof ,其功能是给出相应数据类型的数据所占
用的内存字节数。
2. 变量是一个用于存放数值的内存存储区,根据变量的类型不同,
该存储区被分配不同字节的内存安源。变量用标识符命名。变
量名不能实用系统已有定义的关键字作为标识符,也不要使用
系统预定义的标识符作为标识符。C程序中用到的任何变量都
必须在使用前进行定义。
3. 整形变量可以用十进制、八进制、和十六进制来表示。鬼死那
个,以1-9 开头的数字表示十进制数;以0 开头的数字表示八
进制数;以0x 开头的数字表示十六进制数。实行乘凉只能用
十进制,可以用小数形式或指数形式表示。
字符常量以单引号定界,占一个字节存储单元,在内存中以相
应的ASCII 码存放;字符串敞亮以双引号定界,占用一段连续
的存储单元。要注意字符和字符串的区别。
符号常量是用一个标识符代表的敞亮。符号常量名常用大写,
以区别变量。
4. 转义字符占一个字节,分为以下三类:
(1) 控制输出格式的转义字符: \n 、\t 、\b 、\r 、\f 等。
(2) 控制三个特殊符号输出的转义字符: 、’、”
(3) 表示任何可输出的字母字符、专用字符、图形字符和控
制字符。\ddd 表示1-3 位八进制数所代表的字符, \xhh
表示1-2 为十六进制数所表示的代码。
5. C语言的运算符
(1) 基本算术运算符:+ - * / % ,先乘除、求余,后加减;
对于/ 运算,两个整数相除结果仍为整数; %运算符只对
整型数据有效。
(2) 逗号运算符的运算规则:从左向右依次运算每一个表达
式,逗号表达式的结果就是最后一个表达式的值。
6.++ 或—可以卸载变量之前,也可以写在变量之后。吐过单独对
一个变量施加前缀或后缀运算,其运算结果是相同的;如果对变量
施加了前缀或后缀运算,并参与其他运算,则前缀运算是先改变变
量的值再做运算,而后缀运算是先参与运算后改变变量的值。自增
和自减运算符的运算对象只能是变量,而不能是表达式或常量。
7. 当表达式中含有不同类型的数据时,运算的数据类型默认按隐式
类型转换,即从精度低的类型自动转换成精度高的类型;也可以按
显式类型转换,一般形式为:{类型标识符}表达式

《动手深度习》的第章主要围绕深度习的预备知识展开,为后续章节的习打下基础。该章内容涵盖了数据操作、数据预处理、线性代数、微积、自动微以及概率等关键领域,旨在帮助读者熟悉深度习所需的数与编程基础[^3]。 ### 数据操作 在数据操作部,介绍了张量(Tensor)的基本操作,包括创建、索引、切片、运算符以及广播机制等。张量是深度习中的核心数据结构,用于表示输入数据、模型参数和输出结果。通过掌握张量的操作,可以更高效地进行数据处理和模型训练。此外,还提到了内存优化的技巧,例如避免不必要的数据复制,从而提高程序的运行效率[^3]。 ### 数据预处理 数据预处理是深度习中不可或缺的一环。该部介绍了如何读取和处理数据集,包括处理缺失值、将数据转换为张量格式等。在实际应用中,原始数据往往存在缺失、噪声或格式不一致的问题,因此需要通过预处理步骤将其转化为模型可以处理的形式。例如,缺失值可以通过插值或删除的方式处理,类别型数据则可以通过独热编码等方式进行转换[^3]。 ### 线性代数 线性代数是深度习的数基础之一。该部详细介绍了向量、矩阵的基本运算,包括点积、矩阵乘法、降维等操作。这些运算在神经网络中广泛应用于特征提取、权重更新等过程。此外,还提到了范数的概念,范数用于衡量向量或矩阵的大小,在正则化等技术中有着重要作用[^3]。 ### 微积 微积是理解神经网络优化算法的关键。该部介绍了导数、梯度等基本概念,并讨论了它们在深度习中的应用。梯度是损失函数对模型参数的偏导数组成的向量,表示了损失函数在参数空间中的变化方向。通过计算梯度,可以使用梯度下降法等优化算法来更新模型参数,使模型更好地拟合训练数据。 ### 自动微 自动微是深度习框架的核心功能之一,能够自动计算复杂函数的导数。该部通过简单的例子展示了如何使用PyTorch进行自动微,包括标量和非标量变量的反向传播。在控制流的例子中,演示了如何设计一个带有条件判断和循环的函数,并计算其梯度。需要注意的是,当变量为非标量时,必须明确指定梯度的形状,否则会引发错误[^4]。 ### 概率 概率论在深度习中扮演着重要角色,尤其是在处理不确定性问题时。该部介绍了概率的基本概念,包括概率布、期望、方差等。概率模型可以帮助我们更好地理解和建模数据的不确定性,从而提高模型的鲁棒性和泛化能力[^3]。 ### 课后练习 为了巩固所内容,第章还提供了丰富的课后练习,涵盖了各个小节的知识点。例如,练习中探讨了为什么计算阶导数比一阶导数的开销更大,以及在运行反向传播函数之后再次运行会发生的错误原因。此外,还设计了一些与控制流相关的梯度计算问题,帮助读者深入理解自动微的工作原理[^4]。 ### 代码示例 以下是一个简单的PyTorch代码示例,展示了如何进行张量操作和自动微: ```python import torch # 创建一个张量并设置 requires_grad=True 以追踪其梯度 a = torch.randn(size=(), requires_grad=True) # 定义一个简单的函数 def f(a): b = a * 2 while b.exp() < 1000: b = b * 2 if b.sum() > 0: c = b else: c = 100 * b return c # 计算函数值 d = f(a) # 计算梯度 d.backward() # 输出梯度 print(a.grad) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

std86021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值