第1章 预备知识
- 程序=数据结构+算法
- 面向过程语言采用自上向下方法设计程序,强调的是算法,编程的重点在于用算法解决问题
- OOP采用自下向上的方法设计程序,强调的是数据,编程的重点放在概念表示上
- 泛型编程强调的是独立于特定数据类型
- OOP的概念赋予了C++将问题的多个概念联系起来的能力(高级概念抽象能力),C语言部分的功能赋予了C++充分利用硬件的能力(低级硬件访问能力)
C++11标准长达1350页,夸张……
Bjarne Stroustrup主页: https://www.stroustrup.com/
cin.get()读取输入,直到遇到Enter键结束,加入该语句可以避免出现程序运行后直接退出的情况。
cin.get();
return 0;
第2章 开始学习C++
C++标准的main函数最后如果没有return 0, 默认隐含有这条语句:仅适合于main函数。
#include <iostream>
using namespace std;
int main()
{
cout << "按Enter键继续……"<<endl;
cin.get();
}
- 编译器将启动代码添加到程序中
- main函数被启动代码调用
- main以外的其他函数由main及其他函数调用
<<插入运算符,表示把内容传送给 cout, 指示了信息流动的路径, 是左移运算符<<的重载- cout对象是用于输出内容的对象
- endl 表示换行,是控制符,会立即刷新输出,
\n虽然也可以换行,但不能保证立即刷新输出
c++builder默认的主函数是 int _tmain(int argc, _TCHAR* argv[]) , 实际上有一个隐藏的main函数来调用 _tmain函数
重载的例子:
&,地址运算符,AND 运算符*,乘法,对指针解除引用
#include <iostream>
using namespace std;
int main()
{
int carrots;
cout << "你有几个carrots?" << endl;
cin >> carrots;
cin.get();
cout << "我有" << carrots << "个carrots" << endl;
carrots--;
cout << "我吃掉了一个carrot,还有" <<carrots<<"个"<< endl;
cout << "按Enter键继续……" << endl;
cin.get();
return 0;
}
第3章 处理数据
整数
sizeof 函数:https://learn.microsoft.com/zh-cn/cpp/cpp/sizeof-operator?view=msvc-170
c++ Builder 下 short,int,long,long long 的数值范围 (int 和long相同),32位和64位结果是一样的:
#include <iostream>
#include <limits>
using namespace std;
int main()
{
char i_char = CHAR_MAX;
short i_short = SHRT_MAX;
int i_int = INT_MAX;
long i_long = LONG_MAX;
long long i_llong = LLONG_MAX;
cout << "char 类型:" << sizeof(i_char) << "字节," << sizeof(i_char) * 8
<< "位,最大值为" << int(i_char) << endl;
cout << "short 类型:" << sizeof(i_short) << "字节," << sizeof(i_short) * 8
<< "位,最大值为" << i_short << endl;
cout << "int 类型:" << sizeof(i_int) << "字节," << sizeof(i_int) * 8
<< "位,最大值为" << i_int << ",约为" << i_int / 100000000 << "亿"
<< endl;
cout << "long 类型:" << sizeof(i_long) << "字节," << sizeof(i_long) * 8
<< "位,最大值为" << i_long << ",约为" << i_long / 100000000 << "亿"
<< endl;
cout << "long long类型:" << sizeof(i_llong) << "字节,"
<< sizeof(i_llong) * 8 << "位,最大值为" << i_llong << ",约为"
<< i_llong / 100000000 << "亿" << endl;
cin.get();
return 0;
}
运行结果:
char 类型:1字节,8位,最大值为127
short 类型:2字节,16位,最大值为32767
int 类型:4字节,32位,最大值为2147483647,约为21亿
long 类型:4字节,32位,最大值为2147483647,约为21亿
long long类型:8字节,64位,最大值为9223372036854775807,约为92233720368亿
整数字面值
- 十进制数在cout中用dec输出
- 0开头为8进制数,cout中用oct输出
- 0x或0X开头为16进制数,cout中用 hex输出
#include <iostream>
using namespace std;
int main()
{
int i = 0100;
cout << "0100 8进制,10进制,16进制:" << oct << i << " " << dec << i << " "
<< hex << i << endl;
//0100 8进制,10进制,16进制:100 64 40
i = 0X40;
cout << "0X40 8进制,10进制,16进制:" << oct << i << " " << dec << i << " "
<< hex << i << endl;
//0X40 8进制,10进制,16进制:100 64 40
cin.get();
return 0;
}
cout区分输出: char 与 int
#include <iostream>
using namespace std;
int main()
{
int i;
char c;
for (i = 0; i < 127; i++) {
c = i;
cout << i << ":" << c;
if (i != 0 and i % 5 == 0) {
cout << endl;
} else {
cout << " ";
}
}
cin.get();
return 0;
}
输出:
0: 1: 2: 3: 4: 5:
6: 7: 8 9: 10:
14: 15:13:
16: 17: 18: 19: 20:
21: 22: 23: 24: 25:
26: 27: 28: 29: 30:
31: 32: 33:! 34:" 35:#
36:$ 37:% 38:& 39:' 40:(
41:) 42:* 43:+ 44:, 45:-
46:. 47:/ 48:0 49:1 50:2
51:3 52:4 53:5 54:6 55:7
56:8 57:9 58:: 59:; 60:<
61:= 62:> 63:? 64:@ 65:A
66:B 67:C 68:D 69:E 70:F
71:G 72:H 73:I 74:J 75:K
76:L 77:M 78:N 79:O 80:P
81:Q 82:R 83:S 84:T 85:U
86:V 87:W 88:X 89:Y 90:Z
91:[ 92:\ 93:] 94:^ 95:_
96:` 97:a 98:b 99:c 100:d
101:e 102:f 103:g 104:h 105:i
106:j 107:k 108:l 109:m 110:n
111:o 112:p 113:q 114:r 115:s
116:t 117:u 118:v 119:w 120:x
121:y 122:z 123:{ 124:| 125:}
126:~
page 68
正文完