摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢!

自律,是以积极而主动的态度,去解决人生的痛苦~

上一章,我们大谈了Hello,World的一生。下面我们细细品味基础中的一些,从一个简单的案例开始,了解对象,类型等概念。我喜欢解释例子,让大家听着有味,不枯燥~

2.1 一个简单问候的例子

最常见的就是keyBorad input(键盘输入)。从HelloWorldd的输出,我们也想得到用户的输入。通常,实行中的程序会给它的输入产生输出。例如,输入你的名字,输出

一句问候。有时候它就在身边,像我最爱的苹果手机一样。人机交互就是那么简单~

图2.1.1 人机交互(.net)

回到技术点,为了读取用户输入的数据,我们需要在计算机内存中某个地方放置读取所需的内容。这就是对象(Class)。对象是什么,对象时一个某种类型的内存区域。其中类型则确定了对象的信息。而一个有名字的对象,称为该对象的实例(也叫变量)。做个比喻,一看到对象大家想到的就是人,但这里人类才相当于对象。如果想到具体到你的对象,那是变量。

下面我们看下一个简单问候的例子:

#include <iostream>
#include <string>
using namespace std; int main()
{
string your_name;
cin >> your_name;
cout << "你好~" << your_name << endl;
}

从代码中我们可以看出,这个程序很简单。当你输入你的名字,比如我的 “Jeff_Lee”。输出如下:

图2.1.2 显示问候程序界面

值得注意的是我的fisrt name  和 last name 不能和空格隔开。原因很简单:

cin>>该操作符是根据后面变量的类型读取数据。输入结束条件 :遇到Enter、Space、Tab键。

剖析下刚刚那小程序(坚信:小程序也有学习地方):

cin >> your_name;

这个会保存一个字符串的内存区域,并将这个区域命名为your_name。意义在于计算机为这个变量分配内存空间。如图所示:

图2.1.3 内存分析

cout << "你好~" << your_name << endl;

下面一句上面也讲过,它会将根据变量类型,让那个内存存入对象的值。本来上面空的内存区域则有了数据。如图:

图2.1.4 内存分析

2.2 变量及类型

正如我们上面所说,计算机内存存储数据的位置称为对象。我们需要用一个名字来访问,从而是这个对象成为变量。变量则有她特定的类型。基本类型罗列如下:

  •         bool 布尔型
  •   char 字符型 8位
  •   wchar_t 宽字符型 16位
  •   short 短整型 16位
  •   int 整形 16位
  •   long 长整形 32位
  •   float 单精度浮点型 6为有效数字
  •   double 双精度浮点型 10位有效数字
  •   long double

下面 看下一个好玩的例子:

#include <iostream>
#include <string>
using namespace std; int main()
{
string your_name;
int your_age; cin >> your_name >> your_age;
cout << "Hi!~" << your_name << " is " << your_age << " years old";
}

如果你尝试输入“ Jeff Lee 21”,按下回车键。你会很惊讶~,为什么不是出现 “Jeff Lee is 21 years old.”而是

图2.2 有趣例子的显示

这里我们关注的有两点,再次再次强调 cin>>该操作符是根据后面变量的类型读取数据。输入结束条件 :遇到Enter、Space、Tab键。其次,string型的“Lee”不会被int型age所读取。这是很属虎的将是随机数。为什么?因为age没有被初始化,当你执行的时候,会得到内存中某部分的垃圾值。比如上面的 -858993460.你可以想想,如果再次运行下上面的程序,输入一样的话,age会变~

操作符>>相关资料:http://www.cplusplus.com/reference/istream/istream/operator%3E%3E/

2.3 运算

运算,何为运算?运算的本质其实是集合的映射。最初的程序基本都是为了运算诞生的。这小块就仿佛来到了我们喜欢的数学领域。

图 2.3 早期计算机

但是,很多想数学细节情况要记住。比如:

string str = "jefflee"-"lee";

编译器是拒绝对字符串的减运算。但编译器很笨,她不知道有些例如,age大于0;

int age = -99;

在你看来是荒唐的,在它那里确实正确的。

所以,运算要我们去符合编译器规则,结合问题定义自己规则。

小结

(这是第二章 上等下篇文章一起出来再总结。)

如以上文章或链接对你有帮助的话,别忘了在文章按钮或到页面右下角点击 “赞一个” 按钮哦。你也可以点击页面右边“分享”悬浮按钮哦,让更多的人阅读这篇文章

下面是pdf,要下载的请打开:(http://files.cnblogs.com/Alandre/cplusplusV1.pdf

经典中的品味:第二章 C++基本的对象,类型和值(上)的更多相关文章

  1. ASP.NET Core 中文文档 第二章 指南(5) 在 Nano Server 上运行ASP.NET Core

    原文 ASP.NET Core on Nano Server 作者 Sourabh Shirhatti 翻译 娄宇(Lyrics) 校对 刘怡(AlexLEWIS).许登洋(Seay).谢炀(kile ...

  2. [Effective Java]第二章 创建和销毁对象

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. [Effective Java 读书笔记] 第二章 创建和销毁对象 第一条

    第二章  创建和销毁对象 第一条 使用静态工厂方法替代构造器,原因: 静态工厂方法可以有不同的名字,也就是说,构造器只能通过参数的不同来区分不同的目的,静态工厂在名字上就能表达不同的目的 静态工厂方法 ...

  4. [Java编程思想] 第二章 一切都是对象

    第二章 一切都是对象 2.1 用引用操纵对象   创建一个String引用: String s;   这里所创建的只是引用,并不是对象.   创建一个引用的同时便初始化: String s = &qu ...

  5. ASP.NET Core 中文文档 第二章 指南(4.4)添加 Model

    原文:Adding a model 作者:Rick Anderson 翻译:娄宇(Lyrics) 校对:许登洋(Seay).孟帅洋(书缘).姚阿勇(Mr.Yao).夏申斌 在这一节里,你将添加一些类来 ...

  6. ASP.NET Core 中文文档 第二章 指南(4.9)添加验证

    原文:Adding Validation 作者:Rick Anderson 翻译:谢炀(Kiler) 校对:孟帅洋(书缘).娄宇(Lyrics).许登洋(Seay) 在本章节中你将为 Movie 模型 ...

  7. ASP.NET Core中使用GraphQL - 第二章 中间件

    前文:ASP.NET Core中使用GraphQL - 第一章 Hello World 中间件 如果你熟悉ASP.NET Core的中间件,你可能会注意到之前的博客中我们已经使用了一个中间件, app ...

  8. ASP.NET Core 中文文档 第二章 指南(2)用 Visual Studio 和 ASP.NET Core MVC 创建首个 Web API

    原文:Building Your First Web API with ASP.NET Core MVC and Visual Studio 作者:Mike Wasson 和 Rick Anderso ...

  9. ASP.NET Core 中文文档 第二章 指南(4.3)添加 View

    原文:Adding a view 作者:Rick Anderson 翻译:魏美娟(初见) 校对:赵亮(悲梦).高嵩(Jack).娄宇(Lyrics).许登洋(Seay).姚阿勇(Dr.Yao) 本节将 ...

随机推荐

  1. session实现原理(阿里面试题)

    问: 当用户登录某网站后,向服务器发送一个请求,服务器如何判断是这个用户请求的 首先,你要明白一点,最初http协议在设计的时候,主要面向当时的web1.0网站,他们不需要知道是谁来访问,只需要向外界 ...

  2. 关于git的一些命令

    git命令 1.git init 初始化仓库 2.git status 查看当前状态 3.git add -A(提交所有的) 提交本地文件到缓存区 4.git commit -m"提交信息& ...

  3. Linux的历史发展及应用

    Linux的基本介绍: Linux的历史: 操作系统,英语Operating System简称为OS.说道操作系统就需要先讲一讲Unix,UNIX操作系统,是一个强大的多用户.多任务操作系统,支持多种 ...

  4. 85、int 、NSInteger、NSUInteger、NSNumber的区别和联系

    NSNumber是NSValue的一个子类,它是一个对象来存储数字值包括bool型,它提供了一系列的方法来存储char a signed or unsigned char, short int, in ...

  5. git撤销commit-hard

    场景: 不小心commit了一个不应该commit的修改,但是还没有push,想撤销那个commit 命令: a)git log b)git reset --hard commit_id 具体步骤如下 ...

  6. LoRa与NB-IoT对比(转载)

    物联网的基本架构包括三个层面:感知层.网络层和应用层. 物联网架构图 感知层通过传感器采集某些数据(声.光.电等),基于网络层的终端模组,对接到网络层的基站,实现数据采集后的传输. 网络层负责将感知层 ...

  7. php签名认证

    一.概述 开年第一篇,该篇主要讲述了接口开发中,如何安全认证.如何用php签名认证. 二.说说历史 签名认证是什么?为什么要做签名认证?签名认证哪里会用到?no.no.no.....是不是,是不是,一 ...

  8. poj1164 The Castle

    有一个n*m的城堡,由一个个小房间组成,每个房间由一个零和四面的墙组成,每个房间都有一个价值, 价值的计算方式是:west_walls价值为1,north_walls价值为2,east_walls价值 ...

  9. HG

    ==========秦魏魏曹WLLMONKTVKTPKMMPWUUUQL}][孔吕吕孔戚%韩施卫韩华?韩魏L!张沈韩谢==========

  10. 时间字符串格式化 js

    /*格式化*/ function dateFormat(dateString, format) { if (!dateString) return ""; //var time = ...