C++ Primer Study Note 系列[1]-chapter1快速入门

I want to study it all the time , and now I am ready to study this book in the next mouth.

Time : 2014/07/02

先看一个程序体验一下:

#include <iostream>
int main()
{
    /*This is a test example*/
    std::cout << "Enter two numbers:" << std::endl;
    int v1, v2;
    std::cin >> v1 >> v2;
    //below, you will add the valus 1 and 2;
    std::cout << "The sum of " << v1 << " and " << v2
    << " is " << v1 + v2 << std::endl;
    return 0;
}

1.标准输入与输出对象

标准库定义了 4 个 IO 对象。处理输入时使用命名为 cin(读作 see-in)的 istream 类型对象。这个对象也称为标准输入。处理输出时使用命名为 cout(读作 see-out)的 ostream 类型对象,这个对象也称为标准输出。标准库还定义了另外两个 ostream 对象,分别命名为 cerr 和 clog(分别读作“see-err”和“see-log”)。cerr 对象又叫作标准错误,通常用来输出警告和错误信息给程序的使用者。而 clog 对象用于产生程序执行的一般信息。

2.关键概念:已初始化变量和未初始化变量

已初始化变量是指变量在定义时就给定一个值。未初始化变量则未给定初始值:

int val1 = 0; // initialized

int val2; // uninitialized

给变量一个初始值几乎总是正确的,但不要求必须这样做。当我们确定变量在第一次使用时会赋一个新值,那就不需要创建初始值。我们的第一个有意义的程序中,定义了未初始化变量,并立即读取值给它们。定义变量时,应该给变量赋初始值,除非确定将变量用于其他意图之前会覆盖这个初值。如果不能保证读取变量之前重置变量,就应该初始化变量。

3.注释

C++ 中有单行注释和成对注释两种类型的注释。单行注释以双斜线(//)开头,行中处于双斜线右边的内容是注释,被编译器忽略。另一种定界符,注释对(/* */),是从 C 语言继承过来的。这种注释以“/*”

开头,以“*/”结尾。

注释对不可嵌套

编译器把落入注释对“/**/”之间的内容作为注释注释总是以 /* 开始并以 */ 结束。这意味着,一个注释对不能出现在另一个注释对中。由注释对嵌套导致的编译器错误信息容易使人迷惑。

4.控制结构

while 语句:while (condition) while_body_statement;

while (val <= 10) {
    sum += val; // assigns sum + val to sum
    ++val; // add 1 to val
}

条件/condition是一个可求值的表达式,所以可以测试其结果。如果结果值非零,那么条件为真;如果值为零,则条件为假。

for 语句:头由三部分组成:一个初始化语句,一个条件,一个表达式。

for (int val = 1; val <= 10; ++val)
    sum += val; // equivalent to sum = sum + val

扼要重述一下,for 循环总的执行流程为:

1. 创建 val 并初始化为 1。

2. 测试 val 是否小于或等于 10。

3. 如果 val 小于或等于 10,则执行 for 循环体,把 val 加到 sum 中。

如果 val 大于 10,就退出循环,接着执行 for 语句体后的第一条语句。

4. val 递增。

5. 重复第 2 步的测试,只要条件为真,就继续执行其余步骤。

5.编译

编译器的部分工作是寻找程序代码中的错误。编译器不能查出程序的意义是否正确, 但它可以查出程序形式上的错误。下面是编译器能查出的最普遍的一些错误。

1. 语法错误。

2. 类型错误。

3. 声明错误。

错误信息包含行号和编译器对我们所犯错误的简要描述。按错误报告的顺序改正错误是个好习惯,通常一个错误可能会产生一连串的影响,并导致编译器报告比实际多得多的错误。最好在每次修改后或最多改正了一些显而易见的错误后,就重新编译代码。这个循环就是众所周知的编辑—编译—调试。

C++ Primer Study Note 系列[1]-chapter1快速入门,布布扣,bubuko.com

时间: 2024-12-25 19:43:12

C++ Primer Study Note 系列[1]-chapter1快速入门的相关文章

Gradle学习系列之一——Gradle快速入门

Gradle学习系列之一--Gradle快速入门 这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构建多个Project 自定义Task类型 自定义Plugin 请通过以下方式下载本系列文章的Github示例代码: git clone https://github.com/davenkin/gradle-learning.git 和Maven一样,

Gradle学习系列之一——Gradle快速入门(转)

这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构建多个Project 自定义Task类型 自定义Plugin 请通过以下方式下载本系列文章的Github示例代码: git clone https://github.com/davenkin/gradle-learning.git 和Maven一样,Gradle只是提供了构建项目的一个框架,真正起作

MyBatis系列01之快速入门

1.MyBatis介绍 MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 2.MyBatis快速入门 2.1.添加Jar包 mybatis-3.1.1.jar mysql-connector-java-5.1.7-bi

(Java多线程系列一)快速入门

Java多线程快速入门 1.线程和进程的区别 进程是所有线程的集合,每一个线程是进程的一条执行路径. 2.多线程的应用场景 多线程主要体现在提高程序的效率,比如迅雷多线程下载,多线程分批发送短信等. 3.多线程的创建方式 (1)继承Thread类,重写run()方法 class ThreadDemo extends Thread { @Override public void run() { System.out.println("这里是子线程"); System.out.printl

WPF快速入门系列(8)——MVVM快速入门

一.引言 在前面介绍了WPF一些核心的内容,其中包括WPF布局.依赖属性.路由事件.绑定.命令.资源样式和模板.然而,在WPF还衍生出了一种很好的编程框架,即WVVM,在Web端开发有MVC,在WPF客户端开发中有MVVM,其中VM就相当于MVC中C(Control).在Web端,微软开发了Asp.net MVC这样的MVC框架,同样在WPF领域,微软也开发了Prism这样的MVVM框架.Prism项目地址是:http://compositewpf.codeplex.com/SourceCont

.Net程序员玩转Android系列之一~Java快速入门

前段时间受公司业务发展需要,探索性进入Android开发领域.一切从零开始,java基础,Java进阶,Android框架学习,Eclipse熟悉,最终到第一个即时通讯App完成,历经一个月的时间.实现内容包含一个即时通讯服务端,Mysql数据库搭建,Android客户端通讯App.完成之后公司出于战略考虑,暂时放弃了Android.让我觉得,哎,还是不要太相信领导的话为好...>..<...趁着记忆还不算模糊,打算把这段经历和学习过程记录下来,以备日后需要. 只会一门语言的只能称之为技术人员

「数据挖掘入门系列」Python快速入门

Python环境搭建 本次入门系列将使用Python作为开发语言.要使用Python语言,我们先来搭建Python开发平台.我们将基于Python 2.7版本.以及Python的开发发行版本Anaconda版本来开发. Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项. 下载地址: https://www.anaconda.com/distribution/,注意要下载2.7版本 下载好Anaconda安装包后,即可安装,安装好后

快速入门系列--MVC--01概述

虽然使用MVC已经不少年,相关技术的学习进行了多次,但是很多技术思路的理解其实都不够深入.其实就在MVC框架中有很多设计模式和设计思路的体现,例如DependencyResolver类就包含我们常见的DI依赖注入概念和注册表模式(GetService)等内容,ExceptionFilter等过滤器就体现AOP的概念,整个MVC内置了一个IOC容器,基本上所有的框架类的对象都是通过这种方式来创建的.此外,一直觉得很j2ee的spring很棒,其实如果大家很熟悉EHAB(微软企业开发库)的话,就会发

快速入门系列--WebAPI--03框架你值得拥有

接下来进入的是俺在ASP.NET学习中最重要的WebAPI部分,在现在流行的互联网场景下,WebAPI可以和HTML5.单页应用程序SPA等技术和理念很好的结合在一起.所谓ASP.NET WebAPI,其核心概念就是构建REST风格的Web服务,把一起数据视为资源,无论是服务请求或者是数据操作,与以前的SOAP和XML-RPC架构风格有很大不同.说道这,很多读者可能想到WCF中不是早都有了REST风格的服务么,为什么还需要这个WebAPI?确实如此,不过WCF中的该类型服务显得比较复杂,因为其通