参考国二《C语言程序设计2020年版》教材自学笔记
声明:该笔记仅为个人笔记,通过教材的自主学习从而进行选取干货部分摘录和个人见解分析,如有不足请多指教,该笔记不做商用化!个人笔记会同步CSDN博客和B站。
第二章(下)
2.4 实型数据
2.4.1 实型常量
① C语言中实型变量分为单精度型和双精度型两种,分别用类型名“float”和“double”进行定义。
② 在一般计算机系统中,为“float”类型的变量分配4个字节的存储单元,为“double”类型的变量分配8个字节的存储单元,并按实型数的存储方式存放数据。实型的变量只能存放实型数。
③ 在VC中单精度实数(float类型)的数值范围是 -10^38—— 10^38 ,并提供7位有效数字位;绝对值小于10^-38的数被处理成零值。
④ 在VC中双精度实数(double类型)的数值范围是-10^308—— 10^308,并提供 15——16位有效数字,具体精确到多少位与机器有关;绝对值小于10^-308的数被处理成零值。
⑤ 在VC中,所有的float类型数据在运算中都自动转换成double型数据。
⑥ 在内存中,实数一律是以指数形式存放的。
⑦ 计算机中存放实型数容易出现误差,整数可以被精确的存放。
2.5 算术表达式
2.5.1 基本的算术运算符
① C语言中,基本的算术运算符是:+、-、*、/、%(加、减、乘、除、求余),这些运算符需要两个运算对象,称为双目运算符。除求余运算符%外,运算对象可以是整型,也可以是实型。
② 求余运算符(%)的运算对象只能是整型。求余运算符左侧是被除数,右侧是除数。
③ “+”和“-”也可用作单目运算符,运算符必须出现在运算数的左边。
④ 如果双目运算符两边运算数的类型一致,则所得结果的类型与运算数的类型一致。
⑤ 如果双目运算符两边运算数的类型不一致,系统将自动进行类型转换,使运算符两边的类型达到一致后,再进行运算。
⑥ 在C语言中,所有实型数的运算均以双精度方式进行。若是单精度数,则在尾数部分添0,使之转化为双精度数。
2.5.2 运算符的优先级、结合性和算术表达式
① 凡是表达式都有一个值,即运算结果。
② 只有单目运算符“+”和“-”的结合性是从右到左,其余运算符的结合性都是从左到右。
③ 用算术运算符和一对圆括号将运算数(或称操作数)连接起来的、符合C语言语法的表达式称为算术表达式。
④ 算术表达式中,运算对象可以是常量、变量和函数等。
⑤ 若表达式中运算符的级别相同,则按运算符的结合方向进行。
2.5.3 强制类型转换表达式
① 强制类型转换表达式的形式:(类型名)(表达式)
2.6 赋值表达式
2.6.1 赋值运算符和赋值表达式
① 在C 语言中,赋值号“=”是一个运算符,称为“赋值运算符”。
格式为:变量名=表达式
② 赋值号的左边必须是一个代表某一存储单元的变量名。赋值号的右边必须是合法的表达式。
③ 赋值运算的功能是先求出右边表达式的值,然后把此值赋给赋值号左边的变量,确切地说,是把数据存入以该变量为标识的存储单元中去。
④ 在程序中可以多次给一个变量赋值,每赋一次值,与它相应的存储单元中的数据就被更新一次,内存中当前的数据就是最后一次所赋的那个数据。
⑤ 赋值运算符不同于数学中的“等于号”,这里不是等同的关系,而是进行“赋予”的操作。
⑥ 表达式应当读作“把右边变量的值赋给左边变量”。
⑦ 赋值运算符的左侧只能是变量,不能是常量或表达式。
⑧ 等号右边的表达式也可以是一个赋值表达式。
2.6.2 复合赋值表达式
① 在赋值运算符之前加上其他运算符可以构成复合赋值运算符。
② C语言规定可以使用10种复合赋值运算符,其中与算术运算有关的复合赋值运算符有:+=、-=、*=、/=、%=(注意:两个符号之间不可以有空格)。
2.6.3 赋值运算中的类型转换
① 在赋值运算中,只有在赋值号右侧表达式的类型与左侧变量类型完全一致时,赋值操作才能进行。如果赋值运算符两侧的数据类型不一致,在赋值前,系统将自动先把右侧表达式求得的数值按赋值号左边变量的类型进行转换,也可以用强制类型转换的方式人为的进行转换后将值赋给赋值号左边的变量。这种转换仅限于数值数据之间,通常称为“赋值兼容”。对于另外一些数据如“地址值”就不能赋给一般的变量,称为“赋值不兼容”。
② C语言的表达式(不包括赋值表达式)中,如果运算符两边的整数类型不相同,将进行类型之间的转换:
(1)若运算符两边一个是短整型,一个是长整型,则将短整型转换为长整型,然后进行运算。
(2)若运算符两边一个是有符号整型,一个是无符号整型,则将有符号整形转换成无符号整型。
③ 赋值号右边的值先转换成与赋值号左边的变量相同的类型,然后进行赋值:
(1)当赋值号左边的变量为短整型,右边的值为长整型,短整型变量只能接受长整型数低位上两个字节中的数据,高位上两个字节中的数据将丢失(高位即靠左侧的部分)。也就是说右边的值不能高于左边可接受范围。
(2)在有符号和无符号整型中,内存中的内容原样复制,将有符号赋值给无符号,负数将转换为整数。
(3)将无符号赋值给有符号,复制的机制同上,若符号位1,将按负数处理。
2.7 自加、自减运算符和逗号运算符
2.7.1 自加运算符“++”和自减运算符“–”
① 自加运算符“++”和自减运算符“–”的运算结果是使运算对象的值增1或减1.
② 运算符“++”和“–”是单目运算符,运算对象可以是整型变量也可以是实型变量,但不能是常量或表达式,因为不能给常量或表达式赋值。
③ 用自加或自减运算符构成表达式时,既可以作为前缀也可以作为后缀运算符。
(1)如果是“i++”,设i=1,则表达式“i++”值为1,i的值为2。
(2)如果是“++i”,设i=1,则表达式“++i”值为2,i的值为2。
④ 运算符“++”和“–”的结合方向是“从右至左”。
⑤ 不要在一个表达式中对同一个变量进行多次诸如“i++”或“++i”等运算,这样不仅可读性差,而且不同的编译系统对这样的表达式将做出不同的解释,进行不同的处理,因而所得结果也各不相同。
2.7.2 逗号运算符和逗号表达式
① 逗号表达式从左到右进行运算:
表达式1,表达式2,表达式3…表达式n
先从表达式1进行计算,依次往右进行。
② 逗号运算符的优先级最低。
文章末尾,祝参加全国计算机等级考试(NCRE)二级的各位朋友能够顺利过关!!!