《C++程序设计》(第4版)|问题精选与提炼|第2章 数据的存储、表示形式和基本运算

发布时间:2024年01月22日

2.1 C++的数据类型

C++数据类型的基本类型有哪些?

  1. 整型:短整型(short int)、整型(int)、长整型(long int)?
  2. 字符型(char)
  3. 浮点型:单精度型(float)、双精度型(double)、长双精度型(long double)?

2.2 常量

常量包括哪两种?

数值型常量(常数)和字符型常量。?

2.2.1 数值常量

一个整型常量可以用哪3种不同方式表示?

  1. ?十进制整数。在一个整型常量后面加一个字母L或l,则认为是long int型常量。
  2. 八进制整数。在常数的开头加一个数字0,就表示这是八进制数形式常数。
  3. 十六进制整数。在常数的开头加一个数字0和一个英文字母X(或x),就表示这是十六进制数形式常数。

浮点数在内存中以什么形式存储??

在程序中无论把浮点数写成小数形式还是指数形式,在内存中都是以规范的指数形式存储的?。数字部分必须小于1,小数点后第一个数字必须非零。

2.2.2 字符常量

字符数据在内存中的存储形式是什么?怎么使用?

将一个字符常量存放到内存单元时,是将该字符相应的ASCII码(二进制形式)放到存储单元中。既然字符数据以ASCII码存储,它的存储形式就与整数的存储形式类似。这样,在C++中字符型数据和整型数据就可以通用。一个字符数据可以赋值给一个整型变量,反之,一个整型数据也可以赋给一个字符变量。对字符数据进行算术运算相当于对它们的ASCII码进行算术运算。

注意字符数据只占1字节,它只能存放0~255内的整数。?

字符常量与字符串常量有什么区别??

  1. ?字符常量由单引号括起来,字符串常量由双引号括起来;
  2. 字符常量只能是单个字符,字符串常量则可以含一个或多个字符;
  3. 字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符"\0" (ASCII码为0)。这是字符串结束的标志;
  4. 可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。可以用一个字符数组来存放一个字符串常量。
  5. ?2.2.3 符号常量

  6. 例:#define PRICE 35

使用符号常量有什么好处??

  1. 含义清楚,见名知意。
  2. 需要改变一个常量时可以“一改全改” 。

2.3 变量

什么是变量??

变量名代表内存中一个存储单元。在对程序编译连接时由系统给每一个变量分配一个地址。在程序中从变量中取值,实际上时通过变量名找到相应的内存单元,从中读取数据。

2.3.1 变量名规则

什么是标识符?怎样是合法的标识符?

用来标识变量、符号常量、函数、数组、类型等实体名字的有效字符序列称为标识符。?

C++规定标识符只能由字母、数字和下划线组成,且首字符不能是数字。标识符不能是关键字。

附C++的63个关键字:

2.3.2 定义变量

C++要求对所有用到的变量作强制定义,也就是“先定义,后使用”,有什么目的??

  1. 凡未被事先定义的,不作为变量名,这就能保证程序中变量名使用得正确。

  2. 每一个变量被指定为一确定类型,在编译时就能为其分配相应的存储单元。如指定a为int型,一般的编译系统对其分配4字节,并按整数方式存储数据。

  3. 指定每一变量属于一个特定类型,这就便于在编译时,据此检查该变量所进行的运算是否合法。?

2.3.3 对变量赋初值

什么叫变量初始化??

?允许在定义变量时对它赋予一个初值。

2.3.4 常变量(只读变量)

#define指令定义的符号常量和用const定义的常变量有什么区别?

?符号常量只是用一个符号代替一个字符串,在预编译时把所有符号常量替换为指定的字符串,它没有可行,在内存中并不存在以符号常量命名的存储单元。

常变量具有变量的特征,在定义时必须初始化,它具有类型,在内存中存在着以它命名的存储单元,可以用sizeof运算符测出其长度。与一般变量唯一的不同是指定变量的值不能改变。

2.4 C++的运算符

C++有哪些运算符?

  1. 算术运算符:加(+)、减(-)、乘(*)、除(/)、取余(%)、自加(++)、自减(--)
  2. 关系运算符:等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)
  3. 逻辑运算符:与(&&)、或(||)、非(!)
  4. 位运算符:按位与(&)、按位或(|)、异或(^)、左移(<<)、右移(>>)
  5. 赋值运算符:赋值(=)、复合赋值(+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=)
  6. 条件运算符:条件表达式(? : )
  7. 逗号运算符:逗号(,)
  8. 指针运算符:星号(*)
  9. 引用运算符和地址运算符:(&)
  10. 求字节运算符:sizeof
  11. 强制类型转换运算符:((类型)或类型())
  12. 成员运算符:(.)
  13. 指向成员的运算符:(->)
  14. 下标运算符:([])

2.5 算术运算符与算术表达式

两个整数相除的结果为整数,若除数或被除数中有一个为负数,怎么舍入?

多数编译系统(包括Visual C++)采取“向零取整”的方法,即-5/3的值等于-1,取整后向零靠拢。

?算术表达式和运算符的优先级和结合性是怎样的?

类型转换有哪两种??

  1. 隐式类型转换。如3+6.5。参与加减乘除的两个数中有一个数为float型数据,则运算结果是double型。
  2. 强制类型转换(显式类型转换)。如(int)(x)%3。在强制类型转换时得到一个所需类型的中间数据,但原来变量的类型未发生变化。?

2.6 赋值运算符和赋值表达式

如果赋值运算符两侧的类型不一致,但都是数值型或者字符型时,在赋值时自动进行类型转换都有哪些形式?

  1. ?将浮点型数据赋给整型变量时,舍弃其小数部分。
  2. 将整型数据赋给浮点型变量时,数值不变,但以指数形式存储到变量中。
  3. 将一个double型数据赋给float变量时,要注意数值范围不能溢出。
  4. 字符型数据赋给整型变量,将字符的ASCII码赋给整型变量。
  5. 将一个int,short或long型数据赋给一个char型变量,只将其低8位原封不动送到char型变量(发生截断)。
  6. 将signed(有符号)型数据赋给长度相同的unsigned(无符号)型变量,将存储单元内容原样照搬(连原有的符号位也作为数值一起传送)。

逗号表达式的一般形式为:

表达式1,表达式2?

其求解过程是怎样的?

?先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值。例:a=3*5,a*4,最后a的值为12。

可扩展到n个表达式。


写运行结果。

#include <iostream>
using namespace std;
int main(void)
{
	int i, j, m, n;
	i = 8;
	j = 10;
	m = ++i + j++;
	n = (++i) + (++j) + m;
	cout << i << '\t' << j << '\t' << m << '\t' << n << endl;
	return 0;
}

10 ? ? ?12 ? ? ?19 ? ? ?41

文章来源:https://blog.csdn.net/weixin_70609079/article/details/135735453
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。