C++ Primer中注意点

endl:
调试时加上能够刷新缓冲区;
测试时可以使用excu <infile >outfile来文件重定向

char:
char类型的有无符号是由编译器决定的,如果要存储不大整数,最好明确指定类型。

类型选择:
1、明确数值不为负时选择无符号;
2、一般选择int,超过int选择long long;
3、浮点运算选择double,其与float速度近似,一般不用long double

类型转换:

bool b = 42;   //值为true
int i = b;  //值为1
i = 3.14;  //值为3
double pi = i;   //值为3.0
unsigned char = -1  //值为255,超出范围时相当于对其可表示范围256取余
signed char = 256  //值未定义

切勿混用带符号和无符号类型:
在这里插入图片描述
在这里插入图片描述
字面值指定类型:
以u后缀,从unsigned int,unsigned long, unsigned long long中选择最小的作为其数据类型;
以l后缀至少long,以ll后缀从unsigned long和long long中选择;
浮点型字面值,以f后缀float类型,以l后缀为long double类型;

列表初始化:
int i = 0;
int i = {0}; //存在精度丢失时将会报错
int i{0}; //存在精度丢失时将会报错
int i(0);//不会报错

声明与定义:
变量可被声明多次,只能定义一次。

extern int i;   //声明,用于使用别处变量
extern int i=1;  //声明并定义
int j;  //声明并定义

注意复合类型定义时的空格:

int* p, p2;  //定义p为指针类型,p2为int, 写法不妥
int *p, *p2;

指针:
初始化所有指针,避免无法预估的错误。

生成空指针
int *p = nullptr;
int *p = 0;
int *p = NULL;   //需要cstdlib,避免使用

任何非0指针条件值都为true。
void*指针类型能够存储任意类型地址,但无法访问对象,因为不知道对象类型。

发布了558 篇原创文章 · 获赞 500 · 访问量 153万+

猜你喜欢

转载自blog.csdn.net/qq_16234613/article/details/104089360