《C++PrimerPlus》笔记 - 到union之前的一些杂记

//下面这个是什么意思?
//endl确保程序继续运行前刷新输出(将其立即显示在屏幕上),而使用“\n”则不能提供这样的保证
//这意味着在一些系统中,有时可能在输入信息后才会出现提示。

//使用tab代码补全

//基本类型和复合类型
//整数 浮点数    数组 字符串 指针 结构

//可以通过在变量名前加前缀来表示变量的数据类型。
//str或sz 以空字符结束的字符串 
//b 布尔值   p 指针   c 单个字符

//c++的基本数据类型确保的是最小长度
/*
	short至少16bit
	int至少与short一样长
	long至少32bit
	longlong至少64bit 且至少与long一样长

*/

//不同的系统,int的长度不同

//sizeof()返回类型或变量的长度,单位是字节byte
//<climits>中包含了数据类型限制的信息。INT_MAX是int的最大取值,CHAR_BIT是字节的位数。还有很多其他。

//short可以节省内存,即使其与int长度相同,但是当int从16bit系统到32bit system之后,用于int存储的内存量将加倍。
//只需要一个字节,可以用char

//用不同进制表示的数字,都可以写,但是存储的时候都是按照二进制存储的。
//输出时候如果不加控制,一般是以十进制输出的。

//数字后面带后缀,就可以被存储成不同的数据类型。
//U 或者 u unsigned int 
//ul uL UL LU unsigned long
//unsigned int 用来表示十六进制数是最合适的

//cout.put(ch)
//cin.get(ch)

//现代系统并非支持所有的转义序列
//\b可以让光标往回退然后更新输入流,比如输出了一堆下划线然后需要在上面填东西就可以用这个

//字符集

//ASCII是Unicode的子集

//char也有unsigned 和 signed
//unsigned的表示范围是0-255
//signed的是-128-127

/*

宽字符类型  wchar_t
可以表示扩展字符集
这是一个整数类型,有足够的空间,表示系统使用的最大扩展字符集
这个时刻在变化,跟底层(underlying)类型有关

要输入和输出wchar_t类型,
可以使用wcin、wcout,用于处理wchar_t流
同时可以在字符串前加 L 表示宽字符串

使用Unicode或者ISO 10646的时候应该知道有这种类型

*/

/*

char16_t和char32_t
二者都是无符号的,长度为16、32bit。

前缀u表示前者,U表示后者

跟随底层,可能随系统变化。

*/

//要在声明中对常量进行初始化

/*

cout.setf()

float的精度比double低

浮点数有优点有缺点

浮点数也有后缀,f表示float,默认是double。

*/

/*

结合性:乘除都是从左到右结合的

*/

/*

大的浮点类型赋给小的,潜在问题是精度降低,值可能超出目标的类型的范围,这种情况下结果不确定。
浮点转换整形,小数部分丢失,原来的值可能超出目标类型的取值范围
大的整形转换成小的整形,后半句同上后半句

初始化的时候,如果用大括号,这是类似列表的初始化,不允许缩窄,变量的类型可能无法表示赋给他的值

但是可以long给了int,因为编译器知道long至少跟int一样长


【表达式中】进行算术运算时,

	一些类型一出现便会自动转换。
	例如bool\char\unsigned char\signed char\short会首先被转换为int
	这叫做整型提升(integral promotion)

	如果两种类型的长度相同,计算机回寿县吧unsigned short转换为unsigned int
	wchar_t->第一个宽度足够存储wchar_t存储的类型:int,unsigned int, long, unsigned long

	c++11的校验表,参见c++primer plus Page64下方



*/

/*

char足够大,可以储存计算机基本字符集的任何成员
wchar_t足够大,足以储存计算机扩展字符集的任何成员


*/

/*

初始化指的就是使用大括号。
其他的,那叫赋值

一般不要让编译器去计算数组中有几个值,最好是自己实现说明好,毕竟可能在初始化的时候少写了一个值

c++11的 初 始 化: 可以省略等号,大括号中啥也不写则默认所有的元素都为0,列表初始化禁止缩窄变换(要填入的大,容器小)

c++11新增了array,STL还有vector


c-style的字符串可以被拼接

*/

/*

cin.get() cin.getline()在读取空行的时候出现的问题????????????????????????????????
见chapter5,6,17

要注意,换行符也会留在输入队列中
所以混合使用cin>>和cin.getline()的时候记得在两个之间加一个cin.get()
或者(cin>>year).get()

string的getline和cin.getline()是不同的,参数不同,用法不同。

c++11中有原始字符串

*/

//位字段

//union共用体,可以用在数据使用两种或更多种类型(格式)但不会同时使用的时候。
//地址是相同的
//常常用来操作系统数据结构或者硬件数据结构


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值