C++ Primer Plus 第三章(处理数据)

1.C++的四种初始化方式

int a = { 9 };
	int b{ 8 };
	int c{1};
	int d(2)
	//c++的三种初始化方式

2.C++的上溢和下溢(附运行结果)

//上溢
	short a = SHRT_MAX;
	unsigned short  b = a;
	cout << "初始: a = " << a << "\tb = " << b << endl;
	a++;
	b++;
	cout << "末态: a = " << a << "\tb = " << b << endl;

	//下溢
	a = b = 0;
	cout << "初始: a = " << a << "\tb = " << b << endl;
	a--;
	b--;
	cout << "末态: a = " << a << "\tb = " << b << endl;

在这里插入图片描述

3.不同进制的赋值和输出

int a= 056;   //decimal
	int b = 56;   //octal
	int c = 0x56; //hexadecimal
	
	//c++默认以十进制打印
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl << endl;

	//以指定格式打印
	cout << oct;
	cout << "a = " << a << endl;
	cout << hex;
	cout << "c = " << c << endl;

在这里插入图片描述
注:标识符hex,oct位于名称空间std中。

4.char类型

char a;
	cout << "请输入a的值:" << endl;
	cin >> a;
	cout << "a = "<<a << endl; 

	int i = a;
	cout << "i = " << i << endl;
	a++;
	i = a;
	cout << "a = " << a << endl;
	cout << "i = " << i << endl;

	//用cout.put()函数
	cout.put(a);
	cout << endl;
	cout.put(i);
	cout << endl;

	//这条语句不像书中说的将打印字符的ASCII码,而仍然打印字符
	cout << 'P' << endl;
	//这条语句将打印字符
	cout.put('P');

在这里插入图片描述
注:char也有分 signed char 和 unsigned char
5.转义序列

//下面这条语句展示c++的三种换行方法
	cout << "a" << '\n'<<"b" << "\n"<<"c"<<"\n"<<"d"<<endl;

	// \b和\v,\a的使用
	char name[10], code[10];
	cout << "请输入用户名_____" << "\b\b\b\b";
	cin >> name;
	cin.get();
	cout << "用户:" << name << endl;

	cout << "请输入密码:\v";
	cin >> code;
	cout << "密码: " << code << "\a"<<endl;

在这里插入图片描述
注:本系统将\v打印成…,呃…不知道怎么形容这个符号

6.通用字符名
用法类似于转移序列,以\u和\U打头,前者后面跟8个十六进制位,后者后面跟16个十六进制位
在这里插入图片描述
7.wcha_t(宽字符类型)
wcha_t是一种整数类型,有足够的空间,可以表示系统使用的最大扩展字符集
cin和cout将输入和输出看做插入流,因此不适合处理该类型。可以用中的wcin和wcout,通过加前缀L来只是宽字符常量和宽字符串。

wchar_t bob = L'p';
	wcout << L"tall" << "do" << endl;
	wcout << bob << endl;

在这里插入图片描述
8.char16_t 和 char32_t
两者都是无符号的。前者前缀为u,长16位,与\u00F6的通用字符名匹配。后者长32位,前缀为U,与\U0000222B通用字符名匹配。

char16_t ch1 = u'q';
	//char32_t ch2 =	U'tencent';//会报错
	//char32_t ch4 = U'\Utencent';//也会报错
	char32_t ch2 = U't';
	char32_t ch3 = U'\U000022BB';

	cout << ch1 << endl << ch2 << endl<< ch3 << endl;
	cout.put(ch1);
	cout << endl;
	cout.put(ch3);

·

9.bool类型,const限定符号

bool t = 100;
	bool s = 0;
	const int a = 6; //固定格式,当然datatype可以变,若不赋值会报错
	
	cout << t << "\t" << s << endl;
	cout << a << endl;

注:使用const限定符的好处
1.相比#define可以明确指定类型
2.可以用c++的作用域规则将定义限制在特定的函数或者文件中
3.可以将const用于更复杂的类型,如数组、结构。

10.浮点类型(float,double,long double)
(1)表示方法有两个,标准小数点表示法和E(e)表示法。注意E(e)表示法数字中不允许有空格,可选加正负号,小数点可选,指数可正可负。
(2)注意float 和 double 的有效为(精确度),改变有效位之后的某个位上的数对输出的值没有影响。

cout.setf(ios_base::fixed, ios_base::floatfield);
	//迫使输出使用小数点表示法,以便更好地了解精度。
	float tub = 10.0 / 3.0;
	double mint = 10.0 / 3.0;
	const float million = 1.0E6;
		
	cout << "tub = " << tub << endl;
	cout << "mint = " << mint << endl;
	cout << "一百万乘tub = " << million * tub << endl;
	cout << "一百亿乘mint = " << million * mint*10000 << endl;

在这里插入图片描述
结论:本系统中float 的精度为7,double的精度为16.

(3)后缀f,l,F,L.   对“修改值而不影响输出的测试”

	float a = 2.34E+22f;
	float b = a + 1.0f;

	cout << "a = " << a<<endl;
	cout << "b - a = "  << b - a << endl;
	cout << "b = " << b << endl;

在这里插入图片描述
10.类型转换
(1)自动类型转换
c++执行的三种自动类型抓换:赋值中,表达式计算,以及向函数传递参数中的类型转换。例如:

#include<climits>
#include<iostream>
using namespace std;

void PRINT(int a, double b);

int main(void)
{
	cout.setf(ios_base::fixed, ios_base::floatfield);
	int a{ 4 };
	int b{ 2 };
	PRINT(a, b);

	return 0;
}

void PRINT(int a, double b)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "a + b = " << a + b << endl;

}

程序将打印:
在这里插入图片描述
注:①表达式计算和初始化赋值中的类型转换要注意一些潜在的问题(p63)和规则(p64)
②{}(列表初始化)不允许缩窄

(2)强制类型转换
①c++格式: typename(value)
②c格式:(typename)value
③特点:不改变原变量的值,而是创建一个新的、指定类型的值
④static_cast格式的强制类型转换

下面是对强制类型转换的运行测试:
int cat, dog, mouse;
	cat = 23.6 + 9.7;//c++先把两个数相加的结果赋给cat,再截短为整型;
	dog = int(23.6) + int(9.7);  //c++风格
	mouse = (int)23.6 + (int)9.7;//c风格

	cout << "cat = " << cat << endl;
	cout << "dog = " << dog << endl;
	cout << "mouse = " << mouse << endl;

	char ch = 'A';
	cout << ch << "的编码为:" << static_cast<int>(ch) << endl;
	cout << ch << endl;

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值