理论题:
1.std::cout<<0+'a'; 的输出是97 (0转换了类型成int,‘a'变成askll码)
2.std::cout<<0+"12.34";的输出是12.34
3.std::cout<<1+"12.34";的输出是2.34 (1加在地址上)
4.int a; std::cin>>a; std::cout<<a; 当输入为‘b'时则输出为0 (输入类型不符,输入无效)
5.#include<iostream> using namespace std; int main(){ int cout; cin>>cout; cout<<cout; }
无输出,因为命名冲突时用后来的,cout变量占掉了输出流cout
更改编译选项为ISO c++11 :
io流:
endl,输出 '\n‘ 并冲洗输出流。例如:cout << endl;
dec, hex, oct,更改之后所有整数输入/输出的基数(进制)
setprecision(n),更改之后所有实数输出的浮点精度
fixed,scientific,更改之后所有实数用于浮点 I/O 的格式化
setw(n),更改下个输入/输出域的宽度,宽度为 n
left,right, 设置下一个填充字符的布置,即左对齐或右对齐
注意,含参数n的操纵符函数要用#include<iomanip>
声明具名命名空间:
namespace 命名空间名 { 声明序列 }
使用其他命名空间中的名字:
·以“无限定名”方式使用:作用范围从using 指令之后到指令作用域结尾为止
using namespace 命名空间名 ;
using 命名空间名 :: 成员名 ;
·以“有限定名”方式使用:作用范围仅为单次
命名空间名 :: 成员名
例如std::cout
•注意:C++比C严格,const 指针值(如“sysu”字面量)必须赋值给 const 指针变量
const char *cout1 = "hello world c++!"; 去掉const会警告
引用:
如int &x=a; 给a取了个叫x的别名
引用不是对象;它们不必占用存储。
•数组不能引用
•不存在指向引用的指针
•不存在引用的引用
•引用必须初始化,且指向的内存不能也不会改变
如b=c,不是让b指向c,而是让b指向的内存(a的内存)储存改为c的值(100)
从引用和别名的角度来理解这个程序:
函数返回值使用引用:
则返回哪个变量,函数返回值就是那个变量的别名,因此那个变量要用static静态: