📄 c++primer
字号:
1.4.2. for 语句 #include <iostream> int main() { int sum = 0; // 求1到10的和 for (int val = 1; val <= 10; ++val) sum += val; // 即 sum = sum + val std::cout << "Sum of 1 to 10 inclusive is " << sum << std::endl; return 0; } 1. 进入 for 时首先执行一次 val = 1 2. 测试 val <= 10 3. 如果 val <= 10 成立,则执行执行循环体;如果不成立,则结束 for 4. val 递增 1 5. 重复第2步 结束 for 循环后,变量 val 不再可访问,循环终止后使用 val 是不可能的。 然而,不是所有的编译器都有这一要求(例如 vs2003)。1.4.3. if 语句 #include <iostream> int main() { std::cout << "Enter two numbers:" << std::endl; int v1, v2; std::cin >> v1 >> v2; // 读入(输入)两个整数 // 确定小数作边界、大数作上边界 int lower, upper; if (v1 <= v2) { lower = v1; upper = v2; } else { lower = v2; upper = v1; } int sum = 0; // 求lower到upper的和 for (int val = lower; val <= upper; ++val) sum += val; // sum = sum + val std::cout << "Sum of " << lower << " to " << upper << " inclusive is " << sum << std::endl; return 0; }1.4.4. 读入未知数目的输入 #include <iostream> int main() { int sum = 0, value; // 读到文件结束符为止, 累加读入的整数的和 while (std::cin >> value) sum += value; // 即 sum = sum + value std::cout << "Sum is: " << sum << std::endl; return 0; } 输入文件结束符(end-of-file, EOF):DOS/Windows 按 Ctrl + Z;Unix 按 Ctrl + D 。 1.5. 类的简介 C++ 中通过定义类来定义自己的数据结构。类机制是 C++ 中最重要的特征之一。 C++ 设计的主要焦点就是使所定义的类类型的行为可以像内置类型(例如int)一样方便。 前面已看到的 istream 和 ostream 都是类,严格来说它们不是语言的一部分。1.5.1. Sales_item 类 // 输入、输出一个订单 #include <iostream> // 标准库头文件用<> ;非标准库的头文件用"" #include "Sales_item.h" // 此文件定义了 Sale_item 类类型(附书源码有此文件) int main() { Sales_item item; // 表示 item 是类型 Sales_item 的一个对象,或简称为: // item 是一个 Sales_item 对象,或更简为:一个 Sales_item。 std::cin >> book; std::cout << book << std::endl; return 0; } 如果输入: 0-201-70353-X 4 24.99 则输出为 0-201-70353-X 4 99.96 24.99 // 两个订单相加 #include <iostream> #include "Sales_item.h" int main() { Sales_item item1, item2; std::cin >> item1 >> item2; std::cout << item1 + item2 << std::endl; return 0; } 如果输入: 0-201-78345-X 3 20.00 0-201-78345-X 2 25.00 则输出为 0-201-78345-X 5 110 22 + 加法操作符,将两个 Sales_item 相加 << 输入操作符,读取一个 Sales_item 对象 >> 输出操作符,输出一个 Sales_item 对象 = 赋值操作符,将一个 Sales_item 对象赋值给另一个 Sales_item 对象 通常,类类型定义在头文件中,通常后缀是 .h (或 .H、.hpp、.hxx),文件名和类名是一样的。 每个类定义一种类型,类型名与类名相同。1.5.2. 初窥成员函数 // 两个交易单相加(先判断ISBN是否一样) #include <iostream> #include "Sales_item.h" int main() { Sales_item item1, item2; std::cin >> item1 >> item2; // 先检查 item1 与 item2 的 ISBN 是否一样 if (item1.same_isbn(item2)) // same_isbn() 是 Sales_item 对象的成员函数,有时叫方法 { std::cout << item1 + item2 << std::endl; return 0; // 表示成功 } else { std::cerr << "Data must refer to same ISBN" << std::endl; return -1; // 表示失败 } }1.6. C++ 程序 // 读入销售交易文件,并产生报告显示每本书的总销售收入、平均销售价格和销售册数 #include <iostream> #include "Sales_item.h" int main() { Sales_item total, trans;// total 用来累加交易单,trans 用来存储读入交易单 if (std::cin >> total) // 读入第1张交易单 { while (std::cin >> trans) // 读入交易单 { if (total.same_isbn(trans)) // 书一样 { total = total + trans; // 累加交易单 } else // 书不一样 { std::cout << total << std::endl; // 打印总数 total = trans; // 下一本书的第1张交易单 } std::cout << total << std::endl;// 打印总数 } } else { // 没有输入!输出警告信息 std::cout << "No data?!" << std::endl; return -1; // 表示失败 } return 0; }第一部分: 基本语言第2章 变量和基本类型 C++ 定义了几种基本类型:字符型、整型、浮点型等。 C++ 还提供了可用于自定义数据类型的机制。 标准库也是利用这些机制定义了许多更复杂的类型,比如可变长字符串 string、vector 等。2.1. 基本内置类型 C++ 标准规定了内置算术类型的最小存储空间: 类型 含义 最小存储空间 bool boolean NA char character 8 bits wchar_t wide character 16 bits short short integer 16 bits int integer 16 bits long long integer 32 bits float single-precision floating-point 6 significant digits double double-precision floating-point 10 significant digits long double extended-precision floating-point 10 significant digits 另外,还定义了一种称为 void 的特殊类型,void 类型没有对应的值,通常用作无返回值函数的返回类型。 整型:bool、char、wchar_t、short、int、long 浮点型:float、double、long double bool 表示真值 true 和 false,0代表 false,非0的值代表 true,可以将算术类型的任何值赋给 bool 对象。 char 适合8个位的字符(例如 ISO-Latin-1 或 ASCII),char 通常是单个机器字节(byte)。 wchar_t 用于存储扩展字符集的字符,比如汉字和日语,这些字符集中的一些字符不能用单个 char 表示。 short、int、long 都是整数。 除 bool 类型外,整型可以是带符号的(signed)也可以是无符号的(unsigned)。 字(word)是机器上整型计算单元,通常一个字足以容纳一个地址。一般在 32 位的机器上,机器字长为 4 个字节。 一般, short 类型为半个机器字长, int 类型为一个机器字长,而 long 类型为一个或两个机器字长。 在32位机器中 int 类型和 long 类型通常字长是相同的。 无符号整型可用于计数。 算术计算一般用 int 、 double ,而一般避免使用 short 、 char 。 试图将336存储到8位的 unsigned char 中,则实际赋值为80,336对256求模得80。2.2. 字面常量(Literal Constants) 只有内置类型存在字面值,没有类类型的字面值。因此,也没有任何标准库类型的字面值。(1) 整型字面常量(没有 short 类型的字面值常量) 20 // 默认为十进制的 int 或 long 024 // 八进制 0x14 // 十六进制 128u // unsigned 1024UL // unsigned long,不建议用小写L,因为l跟1相似 1L // long 8Lu // unsigned long(2) 浮点字面常量 3.14159F // float .001f // float 12.345L // long double,不建议用小写L,因为l跟1相似 0. // 默认为 double 3.14159E0f // float 1E-3F // float,这是科学记数法 1.2345E1L // long double 0e0 // double(3) 布尔、字符字面常量 true // bool,真,即非0值 false // bool,假,即0 'a' // char '2' // char ',' // char ' ' // char,空格 L'a' // wchar_t(4) 字符串字面常量 "Hello World!" // 字符串,在第 4.3 节详细说明 "" // 空字符串 "\nA\tB\tC\n" // 字符串,其中 \n、\t 为不可打印字符的转义字符 L"wide string" // 宽字符串 为了兼容 C 语言,C++ 中所有的字符串字面常量都由编译器自动在末尾加一个空白字符。(5) 连接多个字符串字面常量 // 连接多个字符串字面常量 std::cout << "a multi-line " "string literal " "using concatenation" << std::endl; 执行这条语句将会输出: a multi-line string literal using concatenation // 连接字符串与宽字符串,结果是未定义。不要依赖未定义行为! std::cout << "multi-line " L"literal " << std::endl;(6) 多行字面常量 // 多行的语句 std::cou\ t << "Hi" << st\ d::endl; 等价于 std::cout << "Hi" << std::endl; // 多行的字符串字面常量 std::cout << "a multi-line \ string literal \ // 注意,前面若有空格、制表符,都会认为是字符串的一部分 using a backslash" << std::endl; 等价于 std::cout << "a multi-line string literal using a backslash" << std::endl;(7) 非打印字符的转义序列 (Escape Sequences for Nonprintable Characters) C++ 语言中定义了如下转义字符: \n 换行符 newline \t 水平制表符 horizontal tab \v 纵向制表符 vertical tab \b 退格符 backspace \r 回车符 carriage return \f 进纸符 formfeed \a 报警(响铃)符 alert (bell) \\ 反斜线 backslash \? 疑问号 question mark \' 单引号 single quote \" 双引号 double quote 还可以用十六进制、八进制数字表示转义字符,格式为 \xddd、\ooo,例如: \7 水平制表符,相当于 \r \12 换行符,相当于 \n
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -