C++入门教程之二:变量

变量,顾名思义,意思是变化的量。变量的定义是计算机语言中能储存计算结果或能表示值的抽象概念。一个基本的程序需要变量,因此变量是程序设计中的一大重点。

变量基本结构

var_type var_name;
//如
int hello;

其中var_name是变量类型,var_name是变量名称。

数据范围 变量所能存储的数据。

1.整型变量

整型是最基本、最常用的变量类型,其表示的数字为整数。整型包括长整型、短整型、整型三种。

整型 int

int是最常见的数据类型,数据范围是从-2147483648到2147483647的整数。

长整型 long

long是处理大数据的最佳选择,其数据范围是从-9.223372037×1018到9.223372037×1018-1的整数。

短整型 short

short是快速创建简单数据的一个方法,数据范围是从-32768到32767的整数

2.浮点型

浮点型又称实型,其表示的数字为实数。浮点型数据的运算要比整型数据的运算慢得多,因此如非必要,尽量不要使用浮点型变量。浮点型变量包括单精度类型浮点型、双精度类型和长双精度类型三种

单精度类型浮点型 float

float是最常见的浮点型变量。其数据范围是从-3.402823669×10-38-1到3.402823669×1038的实数。

双精度类型浮点型 double

double是存储非常大的数据的变量类型,其数据范围是从-1.797693135×10-308-1到1.797693135×10308的实数。

长双精度类型浮点型 long double

long doubledouble的数据范围相同,为从-1.797693135×10-308-1到1.797693135×10308的实数。

3.字符型

字符型变量,顾名思义,即存储字符和字符串的变量,变量的标识符是char。字符型变量存储的是ASCII码,对照表见下:



此外,还有第二种字符串类型stringstring不是关键字,但是它的定义方法与其他类型一样。

4.布尔型

布尔型变量的标识符是bool,这种类型的值与众不同:它只有两个值——truefalse,其中true在电脑中存储为1false0

5.复数

复数的使用方法与前面几种不同,需要包含头文件complex

用法

complex<var_type> var_name {实部, 虚部};
//如
complex<double> a {1, 5};

假设有一个复数是1+5i,那么这个复数的实部为1,虚部为5。这里的var_type指的是实部和虚部两个数据的变量类型。

6.auto类型

auto类型有两个意义:

单独使用

auto类型是一个很友好的类型。正如它的名字,auto意味着你不用知道这个数据的类型,因为编译器会帮你推断数据类型。比如你输入auto a = 10000000000000000;编译器会自动把auto替换为long

auto不能推断复数类型和string

注:以下介绍的数据类型无法单独使用,具体语法是

var_decoration var_type var_name;
//如
const int a;

在函数中使用

想如下代码:

#include<iostream>
int add()
{
auto int a;
a+=1;
cout << a << endl;
}
int main()
{
add();
add();
return 0;
}

你会发现,输出的两个数将都是2。auto变量在每次重新定义时将重新分配内存。

7.static类型

想如下代码:

#include<iostream>
int add()
{
static int a;
a+=1;
cout << a << endl;
}
int main()
{
add();
add();
return 0;
}

你会发现,输出的两个数将变成2和3。static变量在函数运行结束后会被保存下来。

8.register类型

register类型代表这个变量被存储在了CPU的寄存器中。这意味着如果你想多次使用这个变量,使用速度将大大加快。但是register类型的可移植性较差,不同的电脑对register变量的处理不同,可能导致在某些电脑中该变量会崩溃。所以不建议使用。

9. extern类型

如果声明一个extern类型的变量,则该变量可以跨文件使用。但是跨的文件必须同时编译,否则无法使用。

10. const类型

const类型代表这个变量无法被改变。如果编译器检测到const变量值被改变,会报错。const常来定义一个常量。

11.unsigned类型

unsigned类型的意义是将数据类型的数据改为非负的。这意味着其数据的取值范围将发生改变。改变的算法为:假设原来的数据范围是-a-1~a(a>0),则修饰后的数据范围将变为0~2a。

前缀和后缀

前缀

前缀的作用是告诉编译器这个数字的进制。用法为

0123	//八进制前缀为0
123 //十进制无前缀
0x1ac //十六进制前缀为0x,十六进制中的a-f可以是大写

后缀

后缀的作用是表明一个数字的类型,用法如下:

123				//int
123L //long
123U //unsigned int
123.123f //float
123.123L //long double

科学计数法

用法:

10e3			//即1×10^3
1.53e-5 //即1.53×10^-5

标识符要求

  1. 必须以字母或下划线为开头
  2. 除开头外,标识符可以是数字、下划线或字母
  3. 如果两个标识符大小写有区别,那么这两个标识符会被认为是两个变量。
  4. 标识符不得是关键字(如下图)

可以用如下方法定义多个同类型的变量:

int a, b, c;

变量初始化

基本语法:

var_type var_name = number;
//如
int a = 1;

注意!

想如下代码:

int a, b = 100;

此代码仅将b赋值为100,a并没有被初始化。

如果想对多个变量赋同一个值,可以用如下方法:

int a, b;
a = b = 100;

C++入门教程之二:变量的更多相关文章

  1. 微信小程序入门教程之二:页面样式

    这个系列的上一篇教程,教大家写了一个最简单的 Hello world 微信小程序. 但是,那只是一个裸页面,并不好看.今天接着往下讲,如何为这个页面添加样式,使它看上去更美观,教大家写出实际可以使用的 ...

  2. HealthKit开发快速入门教程之HealthKit数据的操作

    HealthKit开发快速入门教程之HealthKit数据的操作 数据的表示 在HealthKit中,数据是最核心的元素.通过分析数据,人们可以看到相关的健康信息.例如,通过统计步数数据,人们可以知道 ...

  3. HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID

    HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID HealthKit开发准备工作 在开发一款HealthKit应用程序时,首先需要讲解HealthKit中有哪些类,在i ...

  4. HealthKit开发快速入门教程之HealthKit开发概述简介

    HealthKit开发快速入门教程之HealthKit开发概述简介 2014年6月2日召开的年度开发者大会上,苹果发布了一款新的移动应用平台,可以收集和分析用户的健康数据.该移动应用平台被命名为“He ...

  5. RabbitMQ系列教程之二:工作队列(Work Queues)(转载)

    RabbitMQ系列教程之二:工作队列(Work Queues)     今天开始RabbitMQ教程的第二讲,废话不多说,直接进入话题.   (使用.NET 客户端 进行事例演示)          ...

  6. C#基础课程之二变量常量及流程控制

    课堂练习:.一个四位整数 输出它的千位,百位,十位,个位 数字. ; ; % ; % ; ; Console.WriteLine("千位数" + b+" 百位数" ...

  7. nodejs入门教程之http的get和request简介及应用

    nodejs入门教程之http的get和request简介及应用 前言 上一篇文章,我介绍了nodejs的几个常用的模块及简单的案例,今天我们再来重点看一下nodejs的http模块,关于http模块 ...

  8. github 入门教程之 github 访问速度太慢怎么办

    github 是全世界最流行的开源项目托管平台,其代表的开源文化从根本上改变了软件开发的方式. 基本上所有的需求都能从 github 上或多或少找到现成的实现方案,再也不用重头开始造轮子而是自定义轮子 ...

  9. webpack入门教程之Hello webpack(一)

    webpack入门教程系列为官网Tutorials的个人译文,旨在给予想要学习webpack的小伙伴一个另外的途径.如有不当之处,请大家指出. 看完入门教程系列后,你将会学习到如下内容: 1.如何安装 ...

随机推荐

  1. POJ2635(数论+欧拉筛+大数除法)

    题目链接:https://vjudge.net/problem/POJ-2635 题意:给定一个由两个质数积的大数M和一个数L,问大数M的其中较小的质数是否小于L. 题解:因为大数M已经超过long ...

  2. Prometheus联邦

    联邦使得一个 Prometheus 服务器可以从另一个 Prometheus 服务器提取选定的时序. 1. 使用场景 Prometheus 联邦有不同的使用场景.通常,联邦被用来实现可扩展的 Prom ...

  3. kubernetes dashboard 2.0 部署

    dashboard 可以从微软中国提供的 gcr.io :http://mirror.azure.cn/help/gcr-proxy-cache.html免费代理下载被墙的镜像 docker pull ...

  4. Windows Service 2016 Datacenter\Stand\Embedded激活方法

    安装好系统后连入互联网之后使用管理员身份打开命令行 输入命令 slmgr /skms kms.03k.org 弹出窗口提示模式修改成功后再输入命令:slmgr /ato 以下为各个版本的key 版本: ...

  5. oo第四单元——UML图解析

    本单元是在理解UML图的基础上实现对图的解析和检查.UML图是新接触的一种建模工具,一开始接触UML的时候觉得理解起来比较困难,并不能单纯从代码的角度按照类.方法这样来理解,这只是从类图的角度,还有从 ...

  6. Tomcat集群 Nginx负载均衡 shell脚本实时监控Nginx

    第一步,安装Tomcat 系统环境:Centos7 第1步:下载tomcat安装包 tomcat官网:https://tomcat.apache.org/ 第2步:安装包上传至linux中 第3步:下 ...

  7. JVM调试命令简介

    1.JPS(查JAVA进程) 2.jinfo(查看正在运行java应用程序的扩展参数,包括Java System属性和JVM命令行参数:也可以动态的修改正在运行的JVM一些参数) 大部分的运行期参数是 ...

  8. Day06_32_Java各种内部类

    内部类 内部类都有哪些? 成员内部类 匿名内部类 静态内部类 局部内部类 成员内部类 - 成员内部类内部不能有静态声明(静态方法和静态变量) - 成员内部类可以访问外部类中所有的数据包括静态数据和实例 ...

  9. SSDT表函数Hook原理

    其实 SSDT Hook 的原理是很简单的,我们可以知道在 SSDT 这个数组中呢,保存了系统服务的地址,比如对于 Ring0 下的 NtQuerySystemInformation 这个系统服务的地 ...

  10. UVA11292杀怪

    题意:      一个怪物有N个头,每个头都有半径,然后有M个骑士,每个骑士能砍掉半径小于等于 X[i]的头,花费为X[i],并且一个骑士只能用一次,问砍掉怪物所有头的最小花费. 思路:       ...