1>命名空间
std::cout<<"..."<<std::endl;
using编译指令,可以使该命名空间的所有名称都可用。
方法一:using std::cout;
方法二:using namespace std;
从而实现如下语句的可用:
cout<<"..."<<endl;
将using namespce std 放在函数定义前,有效范围是该文件中所有函数。
将其放在函数定义内,有效范围是该函数内。
2>重载基础
如上的<<插入运算符同样也是左移位;
*是乘法,也是对指针的接触占用;
&既表示地址运算符,又表示按位与。
3>控制符endl和换行符“/n”
endl保证了程序运行前刷新输出(即将其立即显示在屏幕上),“/n”则不可以,以为着有些系统中,输入信息后才会出现提示。
换行符是一种转义序列。
4>代码风格
函数名称相关的()附近没有空白
5>两条cin.get()
第一条输入数字按Enter键,作用为读取输入,第二条暂停,直到按下Enter。
其中cin是istream类中的一个成员,get()是成员函数,
6>可参考的编码约定
//const type name = value;
const int Months =12;//其中常量首字母大写
#define MONTHS 12;//其中整个单词大写;
const 比define 好 ,能明确指定类型。其次,可以使用定义域规则,将定义限制在特定的函数或文件中。第三,可以将const用于更复杂的结构中。
7>浮点常量
一般被保存为double型,如想保存为float,在8.24后加f或F,如8.24f
8>类型转换
①初始化和赋值时进行的转换
int debt = 7.2E12
右边数据无法被保存,输出数据后与原数据的误差不可忽略(输出可能是16万多,而且系统不同输出不同)
②以{}方式初始化
这种初始化一般给复杂的数据结构提供值列表,列表初始化不允许缩窄,即变量的类型可能无法表示他给的值。例如,不允许将整型转换为浮点型。
int x = 66;
char c ={x};
以上用法不被允许,因为列表中的X是一个变量,值可能很大,编译器跟踪x被定义到用x给c赋值的过程。
③表达式中的转换
一些类型在出现时就会自动转换,有些类型与其他类型同时出现在表达式中将会出现转换。
④传递参数时的转换。
⑤强制类型转换。
ex1.
float x = 0.0;
y = int(x);
ex2.
char ch = 'z';
cout<<int(ch)<<"="<<static_cast<int>(ch)<<endl;//显示ASCII码
9>auto声明
auto x = 0.0;//double类型
auto y = 0;//int类型
10数组的初始化
只有定义数组时才能初始化,也不能将一个数组赋给另一个数组。
合法的如下
int a[3] = {0,1,2};
int a[2] = {1};//只给首个赋值,其他为0
另外,C++列表初始化增加了一些功能
也可省略等号 double a[3]{ 1.2e4, 2.4e-4, 0};
也可不包含任何元素的赋值,全部赋值为0 double a[3]{};
注意:列表初始化不可以进行缩窄转换
long a[2] = {2, 3.0}//not allowed 将浮点型转换为整型属于缩窄转换,即使小数位为0
char a[2] = {'a', 1122011} //not allowed 此处char为8位 那么1122011超出范围
11.字符串
①C style string
以空字符结尾!
char[4] = {'l','u','v','u'};
char[5] = {'l','u','v','u','/0'};
这两个都是字符数组。
如果是第一种,会打印出三个字符,并将内存中之后的字节当成要打印的字符,知道遇到空字符停止。
如果是第二种,会只打印前三个字符。
② 基于string类库
12.C++如何确定变量的类型?
除非有理由存储为其他类型,一般存储为int。首先看后缀L,UL(unsigned long),LU(long unsigned),其次考察长度。十六禁止数将被表示为unsigned int,这是因为十六进制常用来表示内存地址,而地址是没有符号的。
13.char及cout.put()用法
cin<<ch;(键入M)
cout<<ch;
此时打印出M,而不是77,cin将键盘输入的M转换为77,输出时cout将值77转换为所显示的字符M,cin和cout都是变量类型引导的。
char ch =‘M’;
int i = ch;
cout<<"The ASCII code for"<<ch<<"is"<<i<<endl;
ch = ch + 1;
i = ch;
cout<<"The ASCII code for"<<ch<<"is"<<i<<endl;
cout.put(ch);
cout.put('!');
显示为:
The ASCII code for M is 77;
The ASCII code for N is 78;
N !
13.string 类型与字符数组的区别
string对象可以被声明为简单变量,而不是数组。类设计能让程序自动处理string的大小,例如,str1的声明创建一个长度为0的string对象,但程序将输入读取到str1时,将自动调整str1的长度。
可以说,string类变量是一个表示字符串的实体,而char数组视为一个用于存储一个字符串的存储单元。