C++Primer——1.快速入门

本章介绍C++大部分基本要素:内置类型、库类型、类类型、变量、表达式、语句和函数。

比如每一笔交易记录了:ISBN、销售册数、销售单价,编程统计每本书的销售册数、总销售收入及平均售价。

1.1 编写简单的C++程序

每个 C++ 程序都包含一个或多个函数,而且必须有一个命名为 main。函数由执行函数功能的语句序列组成。操作系统通过调用 main 函数来执行程序,main 函数则执行组成自己的语句并返回一个值给操作系统。

int main()        // int类型是内置类型
{            // 函数体是被花括号包围的语句块
    return 0;    // 返回0表明程序成功执行,C++多数语句以分号为结束标记
}

在大多数系统中,main 函数的返回值是一个状态指示器。返回值 0往往表示 main 函数成功执行完毕。任何其他非零的返回值都有操作系统定义的含义。通常非零返回值表明有错误出现。每一种操作系统都有自己的方式告诉用户 main 函数返回什么内容。

1.2 初窥输入/输出

C++没有定义输入/输出的任何语句,而是用标准库提供。 &&&

本书的大多数例子都使用了处理格式化输入和输出的 iostream 库。iostream 库的基础是两种命名为 istream 和 ostream 的类型,分别表示输入流和输出流。流是指要从某种 IO 设备上读入或写出的字符序列。术语“流”试图说明字符是随着时间顺序生成或消耗的。

标准库定义了4个IO对象,处理输入用叫cin的istream类型对象,也叫标准输入。处理输出用叫cout的ostream类型对象,叫标准输出。还定义了另外两个ostream对象,分别叫cerr(标准错误,用来输出警告和错误信息)和clog(产生程序执行的一般信息)。

一般情况下,系统将这些对象与执行程序的窗口联系起来。这样,当我们从 cin 读入时,数据从执行程序的窗口读入,当写到 cin、cerr 或 clog 时,输出写至同一窗口。运行程序时,大部分操作系统都提供了重定向输入或输出流的方法。利用重定向可以将这些流与所选择的文件联系起来。

下面要求用户给出两个数,然后输出他们的和:

#include <iostream>

int main()
{
    std::cout << "Enter 2 numbers:" << std::endl;
    int v1, v2;
    std::cin >> v1 >> v2;
    std::cout << "The sum of " << v1 << " and " << v2
        << " is " << v1 + v2 << std::endl;
    return 0;
}

程序的第一行是一个预处理指示: #include

告诉编译器要使用 iostream 库。尖括号里的名字是一个头文件。程序使用库工具时必须包含相关的头文件。#include 指示必须单独写成一行——头文件名和 #include 必须在同一行。通常,#include 指示应出现在任何函数的外部。而且习惯上,程序的所有 #include 指示都在文件开头部分出现。

main函数体中第一句执行了一个表达式,C++中一个表达式由一个或几个操作数和通常是一个操作符组成。该语句的表达式使用了两次输出操作符(<<)。每个输出操作符实例都接受两个操作数:左操作数必须是ostream对象,右操作数是要输出的值。操作符将右操作数写到作为左操作数的ostream对象。&&&

C++中,每个表达式都会产生一个结果,通常是将操作符作用到其操作数所产生的值。当操作符是输出操作符时,结果是左操作数的值,即输出操作返回的值是输出流本身。所以我们可将输出请求链接在一起:

(std::cout << "Enter 2 numbers") << std::endl;

它等价于:

std::cout << "Enter two numbers:";

std::cout << std::endl;

endl是一个特殊值,叫操纵符,将它写入输出流时具有输出换行的效果,并刷新与设备相关联的缓冲区。通过刷新缓冲区,用户可立即看到写入到流中的输出。 调试过程中尽量不要忘记刷新输出流。

前缀std::表明cout和endl是定义在命名空间std中的。使用命名空间程序员可避免与库中定义的名字相同。

标准库使用命名空间的副作用是,当我们使用标准库中的名字时,必须显示的表达出使用

的是命名空间std下的名字。该写法用到了作用域操作符(scope operator, ::操作符)。

输入操作cin类似。

iostream库定义了接受全部内置类型的输入输出操作符版本。

定义变量时,应该给变量赋初始值,除非确定将变量用于其他意图之前会覆盖这个初值。如果不能保证读取变量之前重置变量,就应该初始化变量。

1.3 关于注释

1.4 控制结构

+= 复合赋值操作符。

++val 前自增操作符。



// read till end-of-file,calculating a running total of all values read

while (std::cin >> value)

sum += value;

当我们使用 istream 对象作为条件,结果是测试流的状态。如果流是有效的(也就是说,如果读入下一个输入是可能的)那么测试成功。遇到文件结束符或遇到无效输入时,如读取了一个不是整数的值,则 istream 对象是无效的。处于无效状态的 istream 对象将导致条件失败。

在遇到文件结束符 (或一些其他输入错误) 之前, 测试会成功并且执行 while 循环体。循环体是一条使用复合赋值操作符的语句,这个操作符将它的右操作数加到左操作数上。(用Ctrl+Z来键入结束符,貌似要单独的Ctrl+Z才有效,要按回车让cin读取)

1.5 类的简介

C++ 设计的主要焦点就是使所定义的类类型的行为可以像内置类型一样自然。

.操作符访问成员。调用操作符()。

1.6 C++程序

术语:

buffer(缓冲区)

一段用来存放数据的存储区域。IO 设备常存储输入(或输出)到缓冲区,并独立于程序动作对缓冲区进行读写。 输出缓冲区通常必须显式刷新以强制输出缓冲区内容。默认情况下,读 cin 会刷新 cout;当程序正常结束时,cout 也被刷新。

built-in type(内置类型)

C++ 语言本身定义的类型,如 int。

condition(条件)

求值为真或假的表达式。值为 0 的算术表达式是假,其他所有非 0 值都是真。

manipulator(操纵符)

在读或写时“操纵”流本身的对象,如 std::endl。A.3.1 节详细讲述操纵符。

preprocessor directive(预处理指示)

string literal(字符串字面值)

以双引号括起来的字符序列。


原文链接: https://www.cnblogs.com/adfan/archive/2012/11/20/2778350.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/70046

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午2:05
下一篇 2023年2月9日 下午2:06

相关推荐