C++ Primer 笔记一
第一章 c++代码风格
c++源代码风格1每行一条语句2每个函数的两个花括号各占一行3函数中的语句都对于花括号进行缩进4与函数名称相关的圆括号周围没有空白(空行将声明语句与程序的其他部分分开,或在变量前声明,c++的做法是尽可能在首次使用变量前声明)。
第二章 开始学习c++
变量名的约定:类型_名称 或者是 类型(int)名称(akjl)
c语言输入输出是printf,scanf,他们都包含在头文件stdio.h中
操作符重载:通过重载,同一个操作符将有不同的含义。&操作符表示地址操作符又表示and按位操作符
c++程序应当为程序中使用的每个函数提供原型,而库函数在头文件中有声明,而在库文件中有他的定义。标准c库中提供了140多个预定义函数,而main()函数不是关键字,由于它不是语法的组成
头文件stdlib.h中rand()函数不接受任何参数,并返回一个随机整数,其函数声明如下:int rand(void);
第三章 数据处理
3.1简单变量
内置c++类型有基本类型和复合类型
sizeof操作符能够打印类型或变量长度的单位字节数,如:sizeof(int);sizeof a;//a 为变量
头文件climits包含了整型限制信息
schar_max |
signed char最大值 |
char_bit |
char的位数 |
ing_min |
int最小值 |
uchar_max |
unsigned char最大值 |
schar_min |
signed char最小值 |
shrt_max |
short最大值 |
long_max |
long最大值 |
unit_max |
unsigned int最大值 |
char_max |
char的最大值 |
shrt_min |
short最小值 |
long_min |
long最小值 |
ulong_max |
unsigned long最大值 |
char_min |
char的最小值 |
int_max |
int最大值 |
|
|
ushrt_max |
unsigned short最大值 |
c++的变量的初始化有两种,第一种c语言的:int a=15;第二种是c++的:int a(15);如果不初始化那么变量的值是不确定的
C++添加了两种类型:long long和unsigned long long 两种类型都至少是64位的
cout<<hex;//告诉编译器以16进制的方式输出
cout<<bianliang<<oct;//输出完以后切换到8进制的方式输出
cout<<bianliang<<dec//输出完以后切换回10进制
cout<<1982ul;c++打印常量时候,常量后面加l或l表示1982被存为long型,若是ul或ul表示存为unsigned long型,若是u或u表示存为unsigned int,若无后缀表示存为int。
char ch=’a’;cout.put(ch);//成员变量put()可以打印char型变量,我们也可以写成cout.put(‘n’);
c++转义序列符 (括号里的为ascii符号)
换行符(nl或lf) |
\n |
退格(bs) |
\b |
回车(cr) |
\r |
反斜杠(\) |
\\ |
单引号(‘) |
\’ |
水平制表符(ht) |
\t |
垂直制表符(vt) |
\v |
振铃(bel) |
\a |
问号(?) |
\? |
双引号(“) |
\” |
cout<<endl<<’\n’<<”\n”;//三种方式等效且都表示换行
通用字符名:通用字符名以\u或\u开头,\u后面在跟8个十六进制位,而\u后面跟16个十六进制位,这些位表示的是iso10646编码(iso10646是一种正在制定中的国际标准,位大量的字符提供字符编码,他与unicode合作,确保标准同步,unicode可以表示96000多种符号和49个手写符号,而ascii码就是unicode的一个子集)
cout<<”ni g\u00e2teau.\n”;打印如下ni gâteau //â的iso10646编码是00e2
特殊类型:wcha_t 宽字符类型 bool类型,任何数字值或指针指都可以被隐式的转换为bool值。任何非零值都被转换为true,零被转换为false;反之 int aa=true;long bb=false;也成立。
3.2 const限定符
const long months=true;//const限定符用于定义常量
const限定符定义常量时①常量名一般全用大写,便于与变量区分;②要直接初始化,否则将无法初始化
3.3浮点数
浮点数的书写有两种方式:①常用的标注-942635;②-1.54e-4 5.6545e8 。浮点类型要添加头文件float.h,浮点型的类型有float(32位,其精度低,系统至少有6位有效数位或更低),double(64位,精度至少在13位有效位),long double(80,96,128位)。 浮点常量默认为double类型若希望常量位float,要用f或f后缀,对于long double类型。使用l或l(尽量用l,l像1) cout<<2.2l<<3.12f<<8.123;//8.123为double默认型
c++标准在默认输出时会删除小数点后末尾的零,如将23.450000显示成23.45。
cout.setf(ios_base::fixed,ios_base::flatfield);//可以覆盖默认设置,让打印末尾的0显示出来
3.4 c++算术操作符
求模操作符要求两个数必须为整数
潜在的数值转换问题①大浮点型→小浮点型:精度降低可能超出目标类型的取值范围,结果是不确定的。②浮点型→整型:小数丢失,原先的值可能超出目标类型的取值范围,结果不确定。③大整型→小整形:容易超出范围,通常只复制右边字节
强制类型转换:不会修改变量本身,而是创建一个新的指定类型的值。其格式有两种:
(long) bianliang;//c语言强制类型转换的方式
long (bianliang);//c++风格,其想法是让强制转换类型就像是函数调用