C++PrimerPlus跟读记录【第三章】处理数据

本文深入探讨C++中的各种数据类型,包括整型、字符型、布尔型、浮点型及其特性,详解变量初始化、类型转换、运算符等核心概念,适合初学者和有经验的开发者巩固基础。

第3章 处理数据

目录

1、变量名:

2、整型:

3、整型类型:

4、C++初始化有多种方式:

5、整型进制表示:

6、char:

7、字符集中字符使用数值编码(ASCII码):

8、bool型:

9、const关键字:

10、浮点数:

11、运算符:

12、类型转换:


1、变量名:

  • 只能使用字母字符、数字和下划线
  • 第一个字符不能是数字
  • 区分大小写
  • 不能使用关键字
  • 以两个下划线、下划线加大写字母开头的名称保留给编译器使用。
  • 以一个下划线开头的名称保留作全局标识符。

2、整型:

  • 整型就是没有小数的数字,不同整型用不同的内存量来存储整数。
  • 符号类型可以表示正值和负值,无符号类型只能表示正值。
  • C++基本整型:char、short、int、long、long long。每种类型都有符号版本和无符号版本,共十种。
  • int 设置为自然长度,即计算机处理效率最高的长度。
  • 头文件climits包含了整型限制信息,定义了符号常量:INT_MAX,UNIT_MSX,LONG_MIN等。
  • 变量值不会为负时,采用无符号数unsigned可以表示更大的值。
  • 变量值大于16位时,使用long,防止系统移植到16位系统时出现错误。
  • 仅当有大型数组时,使用short,可以节省int型的内存。
  • char 也是整型。

3、整型类型:

  • short至少16位。
  • int至少和short一样。
  • long至少32位,且至少与int一样长。
  • long long至少64位,且至少与long一样长。

4、C++初始化有多种方式:

  • int emus{7};
  • int rheas = {12};
  • int rocs = {};

5、整型进制表示:

  • C++提供三种计数方式书写整数:10、8、16,并以前两位标识数字常量的基数。
  • 第一位是1~9,十进制(Decimal integer literal)。
  • 第一位是0,第二位是1~7,八进制(Octal integer literal)。
  • 前两位为0x 或 0X,十六进制(Hexadecimal integer literal)。十六进制字符 a~f 和 A~F 对应10~15。
042 = 4*8+2 = 34
0xA5 = 10*16+5 = 165
  • 默认情况下,cout以十进制表示整数。
  • 控制符dec、oct、hex 分别用于指示cout以十进制、八进制、十六进制显示整数。
  • 使用控制符修改后,后边输出均会变化。
int waist = 42;
cout << hex;
cout << "waist = " << waist << endl;
cout << oct << "waist = " << waist << endl;

6、char:

  • char是另一种整型,存储计算机系统中所有节本符号,一般不会超过128个,一个字节就可以表示全部符号。
  • 输入'A',cin将其转换为65进行存储;输出时,cout将65转化为'A'输出。由变量类型引导。
  • 字符表示为整数不必使用转换函数。
  • char在默认情况下,既不是 没有符号,也不是 有符号。可以显式定义为singned char 或 unsigned char。
  • unsigned char范围:0~255,signed char范围:-128~127。
char ch = 'A';
int i = ch;

ch = ch + 1;
i = ch;

cout.put(ch);
  • cout.put(); 显示一个字符。'.' 为成员运算符。

7、字符集中字符使用数值编码(ASCII码):

  • 字符0 编码48
  • 字符A 编码65,字符Z 编码90。
  • 字符a 编码97

8、bool型:

bool变量值可以是true或false。

true和false可以通过提升转换为int型,true=>1,false=>0。

任何数字值或指针值都可以被隐式转换为bool值,任何非零值都被转变为true,零被转为false。

int ans = ture;
bool start = -100; //true
bool stop = 0; //false

9、const关键字:

	int a = 8;
	int* p = &a;
	int* q = (int*) &a;
	cout << p << endl;
	cout << q << endl;
	cout << *p << endl;
	cout << *q << endl;

	const int *p2 = &a;
	int * const p3 = &a;
	*p3 = 9;
	cout << p3 << endl;
	cout << *p3 << endl;

	cout << "Hello World" << endl;
	cin.get();
	system("pause");
	return 0;

输出:

10、浮点数:

  • 浮点类型可以表示带小数部分的数字,分为两部分存储,一部分表示数值,另一部分用于对数值进行放大或缩小。
  • 缩放因子的存在使得浮点数表示范围比整数更大,但其运算速度通常比整数慢。
  • 可以采用标准小数点表示法,也可以采用E表示法,确保数字以浮点格式存储,即使没有小数点。
  • 8.33E-4,可以用E或e,数字中不能有空格。
  • E后的数字表示小数点向左或向右移动的位数,因为小数点可移动,因此称为浮点数。
  • 三种浮点类型:float、double、long double。通常,float为32位,double为64位。
  • float精度小于double,C++只保证float小数位6位有效位。
  • 浮点常量默认情况下为double类型,采用float类型需添加f或F的后缀,long double 采用L的后缀。1.23f。
  • cout 输出会删除末尾的0。调用cout.setf()可以修改输出。cout打印6位小数。
  • cout.setf( ios_base::fixed, ios_base::floatfield);

11、运算符:

  • 转义符:'\n' : 换行符,'\r':回车,'\b':退格。
  • % 求模,取余数。两个操作数必须只能是整数,浮点数将编译错误。% 和 * 、/ 运算优先级相同。
  • 除法,两个操作数都是整数,运算结果将为整数,小数部分被直接丢弃,没有四舍五入。操作数存在浮点数时,结果才保留。

12、类型转换:

  • 将浮点型转换为整型时,C++采用截取,查找最接近的整数,而不是四舍五入。
  • 不同类型的数据进行操作时,算术运算中的低类型会转换为高类型,bool级别最低,char、signed char、unsigned char级别相同。

  • 两种类型运算,会先转为浮点型且:float --> double --> long double。否则说明操作数都是整型,进行整型提升。

  • 整型从低级到高级:char --> short --> int --> long --> long long。有符号、无符号同序。

  • 若两整型分别为有符号和无符号,若无符号级别高,则无符号;否则,若有符号表示范围大,则有符号;否则,都转为有符号类型的无符号版本。

  • int 会转为unsigned int。参考: https://blog.youkuaiyun.com/RiceVan/article/details/108336848

  • 强制类型转换不会修改变量本身,而是创建一个新的、指定类型的值。通用格式:typeName (value)

  • staitc_cast<> 可以将数值从一种数值类型转换为另一种数值类型。static_cast<long> (x)

  • 利用强制类型转换,显示char型ASCII码:

int ch = 'Z';
cout << int(ch) << endl;
cout << static_cast<int>(ch) << endl;
//均输出90
  • auto:让编译器根据初始值的类型推断变量的类型。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值