// myfirst.cpp--displays a message

 #include <iostream>                           // a PREPROCESSOR directive
int main() // function header
{ // start of function body
using namespace std; // make definitions visible
cout << "Come up and C++ me some time."; // message
cout << endl; // start a new line
cout << "You won't regret it!" << endl; // more output
// If the output window closes before you can read it,
// add the following code:
// cout << "Press any key to continue." <<endl;
// cin.get();
return ; // terminate main()
} // end of function body

对上面的代码进行讲解:

1,第一行的双斜杠“//”表示单行注释。注释是给程序员看的,能够帮助程序员快速了解代码的作用。编译时,编译器会把注释忽略掉。除了单行注释,还有多行注释:  /*  */

2,第三行 #include <iostream>  预处理器编译指令。 编译器主编译之前,预处理器会进行编译预处理。将iostream的文件导入到源文件中,组成一个复合文件,然后才会进行主编译。将iostream的内容添加到源程序,是因为程序后面会用到cout、endl等。后面会将到cout、endl到底是什么。其中 iostream 叫做包含文件——被包含在其他文件中,也叫头文件——被包含在文件的起始位置。C语言中,头文件使用扩展名.h,而C++中兼容C语言的扩展名形式,C++的新风格中没有扩展名,具体可查看相关文件。

3,第四行 int main() 是函数头,int是函数的返回值的类型,mian是函数名。括号是参数列表,也叫形参列表。此处为空,叫空参数列表。第五行和第十五行是两个花括号,花括号里面的内容是函数体,函数体内是函数具体要执行的操作。第十四行的return 0;表示函数返回值为0.main函数比较特殊,是编译器的入口函数。一个独立的程序是要有main函数的,这样编译器才知道从哪里开始执行。也有没有main函数的程序,比如动态链接库,是做为函数库,也叫工具,给其他程序调用的。这种就不需要main函数了。

4,第六行 using namespace std; 这叫做using编译指令。std是名称空间,大型程序中会调用到两个不同的已经封装好的产品,可能都提供了A方法,为了让编译器知道具体调用哪个方法,就需要命名空间来区分。比如说命名空间分别为m、n,这样就可以通过m::A()来调用m中的A方法,用n::A()来调用n中的A方法。而std这个命名空间比较特殊,它是C++标准命名空间,C++的标准组件类、函数、变量都放在这个命名空间,比如cout、endl就是放在命名空间std的。使用using编译指令,std内的所有名字都能使用了。当然在大型项目中不建议这样做。可以使用这种 using std:: cout 、using std::endl来使用cout和endl。

5,第七行 cout << "Come up and C++ me some time."; 最后的分号代表一个语句结束。双引号括起来的一系列字符叫做字符串。<<符号表示将该字符串发送给cout;该符号指出了信息流动的路径。cout是一个预定义的对象,知道如何显示字符串、数字、字符等。<<符号是cout的一个插入运算符,可以将符号右侧的信息插入到cout对应的流中。

6,第八行 cout << endl; endl是控制符;在输出流中插入endl,将导致屏幕光标移到下一行。诸如这种对cout有特殊含义的特殊符号叫做控制符。也可以使用\n换行。比如cout<<"you are beautiful\n";其中\n被视为一个字符,叫做换行符。但有个区别是,endl会使屏幕刷新输出(输出缓存)。而\n不会有这种效果。

 // carrots.cpp -- food processing program
// uses and displays a variable #include <iostream> int main()
{
using namespace std; int carrots; // declare an integer variable carrots = ; // assign a value to the variable
cout << "I have ";
cout << carrots; // display the value of the variable
cout << " carrots.";
cout << endl;
carrots = carrots - ; // modify the variable
cout << "Crunch, crunch. Now I have " << carrots << " carrots." << endl;
// cin.get();
return ;
}

1,这个例子与上面的例子没什么太大差别。讲一下第10行 int carrots; 这个表示一个声明语句。int表示数据类型,告诉编译器要申请一个指定大小的内存空间。int,在C++中表示整数。carrots表示申请的内存空间的一个名字。用来表示存储空间所存储的值。

carrots是一个变量,即值是可以变化的。

2,第12行  carrots = 25; 是一个赋值语句,表示将25这个标记赋给carrot所存储的内存空间中。有一个联系赋值的概念,如:a=b=c=3;表示将3赋给c,再将c的值赋给b,再将b的值赋给a。是从右向左进行赋值的。

3,第17行  carrots = carrots - 1; 表示carrots的值25减去1得到24,然后将24这个结果赋值给变量carrots。

4,扩展下,如下:cout<<25;与cout<<"25";有什么区别?25是数字,在计算机中是以二进制存储。二进制表示法与计算机内存完全对应。在内存中,每个单元(位)都可以设置成开或关。0表示关,1表示开。内存通常以字节位单位组织,一个字节包含8位。所以,一般int类型是4个字节,就是32位。25有二进制表示是00000000 00000000 00000000 00011001.而对于字符串“25”,其实是字符'2'、'5'、'\0'三个字符组成的,单个字符是一个字节,也就是8位,“25”在计算机中存储的是00000010 00000101 00000000.那为什么显示出来的都是25,是因为cout会根据数据类型,将整数25转换为字符串,然后显示成25.为什么要转换为字符串显示呢?可以理解为,显示给人看的,就需要转换为字符串。

5,第18行 cout << "Crunch, crunch. Now I have " << carrots << " carrots." << endl; 使用到cout拼接技术。

类简介:

1,类是用户定义的一种数据类型。类定义描述的是数据格式及其用法。对象是根据数据格式规范创建的实体。比如:cout是ostream类的一个对象,cin是istream类的一个对象。只不过这两个对象是内置对象,不需要用户手动去创建就可以使用。

C++ Primer Plus 6 第二章的更多相关文章

  1. C++primer拾遗(第二章:变量和基本类型)

    这是我对c++primer第二章的一个整理总结,算是比较适用于我自己吧,一小部分感觉不用提及的就省略了,只提了一下平时不注意,或者不好记住的内容. 排版太费劲了,直接放了图片格式.从自己的oneNot ...

  2. 《C Primer Plus》- 第二章 C语言概述

    本笔记写于2020年1月27日. 本系列文章参考的是<C Primer Plus>(第六版),其中里面会有笔者自己的相关补充. 以下示例均运行于macOS Catalina 10.15.2 ...

  3. c++ primer敲代码第二章

    今天越来越发现 学习一门编程语言,没有大量的code实践是不行的.看得快忘得更快.痛下决心,把primer的code习题一一实现. 习题2.11 底数和指数,求结果 #include <iost ...

  4. C primer plus 练习题 第二章

    6. #include <stdio.h> void echo(); int main() { /* echo(); echo(); echo(); printf("\n&quo ...

  5. C++ Primer 笔记 第二章

    C++ Primer 第二章 变量和基本类型 2.1基本内置类型 有算数类型和void类型:算数类型储存空间大小依及其而定. 算数类型表: 类型 含义 最小储存空间 bool 布尔型 - char 字 ...

  6. 《C++ Primer》读书笔记—第二章 变量和基本类型

    声明: 文中内容收集整理自<C++ Primer 中文版 (第5版)>,版权归原书所有. 学习一门程序设计语言最好的方法就是练习编程. 1.8比特的char类型计算机表示的实际范围是-12 ...

  7. 《C++Primer》第五版习题答案--第二章【学习笔记】

    C++Primer第五版习题解答---第二章 ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/9 第二章:变量和基本类型 练习2.1: 类 ...

  8. 逆向基础 C++ Primer Plus 第二章 开始学习C++

    C++ Primer Plus 第二章 开始学习C++ 知识点梳理 本章从一个简单的C++例子出发,主要介绍了创建C++程序的步骤,以及其所包含的预处理器编译指令.函数头.编译指令.函数体.注释等组成 ...

  9. C++PRIMER第二章前半部分答案

    C++PRIMER第二章前半部分答案 哈哈哈,为什么是前半部分呢,后半部分还在学习中,重新系统性的学习c++,共同进步嘛,不多说,跟我一起来看看吧,第三章开始才是新手收割的时候,慢慢来~~ 2.1&a ...

随机推荐

  1. spring MVC处理请求过程及配置详解

    本文主要梳理下Spring MVC处理http请求的过程,以及配置servlet及业务application需要的常用标签,及其包含的意义. spring MVC处理请求过程 首先看一个整体图 简单说 ...

  2. mysql中group by 的用法解析

    1. group by的常规用法 group by的常规用法是配合聚合函数,利用分组信息进行统计,常见的是配合max等聚合函数筛选数据后分析,以及配合having进行筛选后过滤. 假设现有数据库表如下 ...

  3. 百行go代码构建p2p聊天室

    百行go代码构建p2p聊天室 百行go代码构建p2p聊天室 1. 上手使用 2. whisper 原理 3. 源码解读 3.1 参数说明 3.1 连接主节点 3.2 我的标识 3.2 配置我的节点 3 ...

  4. ios 初体验<真机调试>

    1.很多小伙伴,初学ios后面,都想迫不及待的连接上真机,在真机上调试,本人今天花了许久时间,在网上查了许多资料,一直出现了个问题导致我没法真机调试, 问题一:Your session has exp ...

  5. linux为用户配置java环境变量

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt226 一. 解压安装jdk 在shell终端下进入jdk-6u14-linu ...

  6. el表达式里面fn的用法

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp31 头部加入标签库 <%@ taglib prefix=" ...

  7. servlet中的字符编码过滤器的使用

    一:简介 Servlet过滤器是客户端和目标资源的中间层组件,主要是用于拦截客户端的请求和响应信息.如当web容器收到一条客户端发来的请求 web容器判断该请求是否与过滤器相关联,如果相关联就交给过滤 ...

  8. Java学习记录:降低耦合度

    耦合度定义 耦合度(Coupling)是对模块间关联程度的度量.耦合的强弱取决与模块间接口的复杂性.调用模块的方式以及通过界面传送数据的多少. 模块间的耦合度是指模块之间的依赖关系,包括控制关系.调用 ...

  9. CCIE-交换路由复习笔记

    交换 考点: 1.trunk link(基础) 2.vtp 3.vlan 4.stp rstp mstp 5.hsrp vrrp glbp 6.ec Trunk link: 修改封装模式 802.1q ...

  10. HIVE和HBASE区别11

    对于刚接触大数据的用户来说,要想区分Hive与HBase是有一定难度的.本文将尝试从其各自的定义.特点.限制.应用场景等角度来进行分析,以作抛砖引玉之用.  Hive是什么? Apache Hive是 ...