数据类型及范围 int 正负21亿(大约) long long 正负9*10^18(大约) float 提供7~8位有效数字 double 提供15~16位有效数字 正负1.7*10^308次方(大约), 用double硬编码一个308位的数字在代码中可能通不过编译 类型 范围(十进制) 内存大小 char -128~127 1 Byte short -32768~32767 2 Byte unsigned short 0~65535 2 Byte int/long -2147483648~2147483647 4 Byte unsigned int 0~4294967295 4 Byte long long -9223372036854775808~9223372036854775807 8 Byte float -3.4E-38~3.4E+38 4 Byte double 1....
intro 目录索引 第01章-开始 第02章-变量和基本类型 第03章-字符串-向量-数组
执行完一个程序后,可以通过echo $?获取返回值
使用g++进行编译
1 g++ filename -o exe_filename 编译选项:
1 g++ filename -o exe_filename -std=c++0x -Wall 其中
-std=c++0x为某些版本GNU编译器打开c++11 -Wall指的是warn all, 打开所有的警告信息 endl是一个被称为操纵符(manipulator)的特殊值,写入endl结束当前行,并将与设备关联的buffer的内容刷新到设备中
作用域运算符::
注释的风格 每行都以一个星号开头,从而指出整个范围都是多行注释的一部分 注释界定符不能嵌套 从键盘输入文件结束符 win下ctrl+z然后enter unix下ctrl+d 默认情况下,cin会刷新cout,程序非正常终止时也会刷新cout
2.1 基本算术类型 算术类型 空类型 类型大小说明 c++标准规定了每个类型的内存最小值,见上表。 一个int至少和一个short一样长 一个long至少和一个int一样长 一个long long至少和一个long 有符号与无符号 一个int和一个unsigned相加,会被转换成unsigned 不要混用有符号和无符号数 字符类型 wchar_t确保可以存放最大扩展字符集的任意一个字符(即取最长长度) char16_t,unicode字符,16位 char32_t, unicode字符,32位 字符串分为三种:char、signed char、unsigned char char和signed char并不一样 浮点数 float通常精度不够 双精度浮点数和单精度浮点数的计算代价相差无几 对某些机器来说,双精度浮点数和单精度浮点数的计算代价相差无几 long double的精度通常下没有必要,且它的运行时消耗不容忽视 类型转换 非布尔类型转布尔类型,若为0则为false,否则为true 布尔类型转其他类型,fasle为0,true为1 浮点数转整型时,仅仅保留浮点数小数点前的部分(做四舍五入吗?) 整型转浮点数时,小数部分为0,如果整数所占空间超过了浮点数容量,精度可能损失(??) 给无符号数赋一个超出它所表示范围的值时,结果是初始值对初始值对无符号数最大值+1取模后的余数。-1赋给unsigned char为255??? -1的表示 建议:避免无法预知和依赖于实现环境的行为 程序应该尽量避免依赖于实现环境的行为,如果把int看成一个确定不变的值,则这样的程序是不可移植的
字面值常量 字符和字符串字面值 一个字面值通常被存放在能存放其的最小的数据类型中,若一个字面值内存超过了最大能存放其的类型,则报错 字符串字面值的长度比其实际长度多1(编译其在每个字符串的结尾处添加一个空字符\0) 如果两个字符串字面值位置紧临且仅由空格、缩进、换行符分隔,则它们实际上是一个整体 转义序列 泛化转义序列,\x后加一个或多个16进制数,\后加1至3个八进制数 指定字面值的类型 例如 初始化和赋值是两个完全不同的操作 初始化是指创建变量时赋予其一个初始值 赋值的含义是把当前的值擦除,用一个新值代替。 4种初始化 1 2 3 4 int a = 0; int a = {0}; int a{0}; int a(0); 当内置类型的变量进行列表初始化时,若存在丢失信息风险,则编译器将报错...
3.1 命名空间的using声明 当使用std::string时,可以用using std::string;进行声明,然后直接访问string即可
3.2 标准类型库string 3.2.1 4种常见初始化方法 1 2 3 4 5 6 7 8 #include <iostream>using std::string; string s1 = "s1"; string s2("s2"); string s3(3, 'a'); // aaa string s4; // 初始化一个空串 3.2.2 直接初始化和拷贝初始化 3.2.3 string的操作 注意:
os<<s;
is>>s;
getline(is, s);
执行读操作时,string对象会自动忽略开头的空白(空格符、换行符、制表符),并从第一个真正的字符开始,直到遇到下一个空白为止。
触发getline返回的那个换行符实际上被丢弃了,返回的对象中并不包含那个换行符
size_type体现了标准库类型与机器无关的特性
两个string使用+运算符后返回的是一个新的string
string和字面量相加+要确保有一个string,最终被转换为string
处理string中的字符: 只要字符串不是const,则可以为下标运算返回的字符赋予新值...