C++回炉之_C++PrimerPlus_第三章 处理数据
2018-03-04 17:24
387 查看
变量命名 |
第一个字符不能为数字
不能将C++关键字作为名称
区分大小写
以两个下划线或下划线和大写字母打头的名称被保留给实现(编译器及其使用的资源)使用
以一个下划线打头的名称被保留给实现,用作全局标识符
对名称长度无限制, 但C99的限制是63个字符
整型 |
int 至少和short一样长
long 至少32位, 且至少和int 一样长
long long 至少64位, 且至少和long一样长
使用 < climits > 获得整形的限制信息
最值
SHRT_MAX SHRT_MIN
INT_MAX INT_MIN
LONG_MAX LONG_MIN
LLONG_MAX LLONG_MIN
字节数 – sizeof(int);
对变量名使用sizeof时, 可不用括号 – sizeof a;
字节位数 – CHAR_BIT
无符号类型 – 使用unsigned关键字即可
unsigned int a = 10;
选择
int 最自然 – 处理效率最高
short 节省内存 – 大型数组
long 可移植性高
char 只有一个字节时用
整型的字面值
十进制(decimal) – int a = 23; cout << dec << a << endl;
八进制(hexadecimal) – int b = 046; cout << hex << b << endl;
十六进制(octal) – int c = 0xAF; cout << oct << c << endl;
整型后缀
L uL uLL 长整型 无符号长整型 无符号long long
char类型 – 字符和小整数 |
#include <iostream> using namespace std; int main() { char ch = 'M'; int i = ch; cout << ch << " - " << i << endl; cout.put(ch); cout.put('!'); // 不带回车 return 0; }
输出结果
M - 77
M!
char 默认为 unsigned char[0,,255] 但也可显示声明为 signed char[-128, 127] – 单字节
转义序列
换行 \n
回车 \r
水平制表 \t
垂直制表 \v
退格 \b
响铃 \a
问号 \?
反斜线 \
单引号 \’
双引号 \”
通用字符名 – ISO 10646 和 Unicode
\u + 8个十六进制位 – \u006E
\U + 16个十六进制位
cout << “k\u00E2rper” << endl; – k芒rper
wchar_t 宽字符类型 – 双字节
wchar_t wch = L ‘P’ ; // 使用前缀L表示
wcout << L “hello” << endl; // 使用wcout和wcin代替cout和cin
char16_t 和 char32_t – C++11新增
char16_t ch1 = u’\u00F6’; // 无符号 16位
char32_t ch2 = U’\U0000222B’; // 无符号 32位
bool类型 |
bool ok = false; // 零值
const限定符 – 定义常量 |
const type name = value; const int maxn = 1004;
const相对于#define 的优点
明确指定类型
可限制在特定的作用域(函数或文件)内 – #define 为全局作用域
可将const 用作更复杂的类型(数组或结构体)
可用const 值声明数组长度
浮点数 |
标准小数点表示法
0.023
8.0
E表示法
3.45E8
2.52e+5
8.33E-4
7E5
-18.34e24
有效位
float 至少32位
double 至少48位 且不少于float
long double 至少和double一样
指数范围到少是[-37, 37] – 可在 < cfloat > 头文件中查看
#include <iostream> using namespace std; int main() { float a = 10.0 / 3.0; double b = 10.0 / 3.0; const float c = 1.0e6; cout.setf(ios_base::fixed, ios_base::floatfield); // 使用定点表示法输出 cout << "a = " << a << endl; cout << "b = " << b << endl; cout << "a*c = " << a*c << endl; // 精度不一样 cout << "b*c = " << b*c << endl; cout << "a*c*10 = " << a*c*10 << endl; //结果不正确 return 0; }
输出结果
a = 3.333333
b = 3.333333
a*c = 3333333.250000
b*c = 3333333.333333
a*c*10 = 33333332.000000
浮点后缀
float – f/F后缀 – 1.234f 1.234F
double – 默认类型 无后缀
long double – l/L后缀 – 1.234L
算术运算符 |
+ 加法
-\ 减法
* 乘法
/ 除法 两个操作数都是整数时结果才为整数
% 求模 两个操作数必须是整数
优先级
先乘除(取模) 后加减
可用括号控制优先级
可在网上搜索C++运算符优先级表
结合性
两个优先级相同的运算符被同时用于一个操作数时,需要考虑是左结合还是右结合
120/4*5 = 150 – 从左往右计算 左结合
类型转换 |
大范围转小范围(long->int 或 float -> int等) 会丢失精度
初始化时或将一种类型赋值给另一种类型时
表达式中包含不同类型时 – 整形提升 小->大
参数传递给函数时
以{}初始化(列表初始化)时,不允许缩窄(float->int) (C++11)
强制类型转换
(typename)value // C语言格式
typename(value) // C++格式 – 像函数调用一样
static_cast < typename > (value) – 更严格的转换(第十五章详解)
auto初探 – C十十11的福利 |
使用STL时方便
vector<int> x; vector<int>::iterator it = x.begin();
可简化为
vector<int> x; auto it = x.begin();
相关文章推荐
- 2012/1/9 《C++ Primer Plus》第三章:处理数据 学习笔记
- C++ Primer Plus 第三章 处理数据
- 2012/1/9 《C++ Primer Plus》第三章:处理数据 学习笔记
- C++ Primer Plus学习:第三章 处理数据(2)
- C++Primer Plus笔记——第三章 处理数据及课后习题答案
- 《C++ Primer Plus(第六版)》(2)(第三章 处理数据 笔记和答案)
- C++ Primer Plus学习:第三章 处理数据(1)
- C++ Primer Plus (第6版)笔记心的---处理数据
- 《C++ Primer Plus》第3章 处理数据 学习笔记
- C++ Primer Plus : 3-处理数据
- c++ primer plus 第3章 处理数据
- C++ Primer Plus(第六版)编程练习 第3章 处理数据
- 《C Primer Plus 》--C++处理数据-变量
- 学习C++.Primer.Plus 3 处理数据
- c++ primer plus第三章习题答案
- C++ Primer Plus(第六版)--学习杂记(第三章)
- C++ Primer Plus第三章课后编程答案
- C++ Primer Plus 第三章练习题
- C Primer Plus学习笔记----第三章数据和C
- c++primer plus之如何处理内存