C++入门教程之二:变量
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 double
与double
的数据范围相同,为从-1.797693135×10-308-1到1.797693135×10308的实数。
3.字符型
字符型变量,顾名思义,即存储字符和字符串的变量,变量的标识符是char
。字符型变量存储的是ASCII码,对照表见下:
此外,还有第二种字符串类型string
。string
不是关键字,但是它的定义方法与其他类型一样。
4.布尔型
布尔型变量的标识符是bool
,这种类型的值与众不同:它只有两个值——true
和false
,其中true
在电脑中存储为1
,false
为0
。
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
标识符要求
- 必须以字母或下划线为开头
- 除开头外,标识符可以是数字、下划线或字母
- 如果两个标识符大小写有区别,那么这两个标识符会被认为是两个变量。
- 标识符不得是关键字(如下图)
可以用如下方法定义多个同类型的变量:
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++入门教程之二:变量的更多相关文章
- 微信小程序入门教程之二:页面样式
这个系列的上一篇教程,教大家写了一个最简单的 Hello world 微信小程序. 但是,那只是一个裸页面,并不好看.今天接着往下讲,如何为这个页面添加样式,使它看上去更美观,教大家写出实际可以使用的 ...
- HealthKit开发快速入门教程之HealthKit数据的操作
HealthKit开发快速入门教程之HealthKit数据的操作 数据的表示 在HealthKit中,数据是最核心的元素.通过分析数据,人们可以看到相关的健康信息.例如,通过统计步数数据,人们可以知道 ...
- HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID
HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID HealthKit开发准备工作 在开发一款HealthKit应用程序时,首先需要讲解HealthKit中有哪些类,在i ...
- HealthKit开发快速入门教程之HealthKit开发概述简介
HealthKit开发快速入门教程之HealthKit开发概述简介 2014年6月2日召开的年度开发者大会上,苹果发布了一款新的移动应用平台,可以收集和分析用户的健康数据.该移动应用平台被命名为“He ...
- RabbitMQ系列教程之二:工作队列(Work Queues)(转载)
RabbitMQ系列教程之二:工作队列(Work Queues) 今天开始RabbitMQ教程的第二讲,废话不多说,直接进入话题. (使用.NET 客户端 进行事例演示) ...
- C#基础课程之二变量常量及流程控制
课堂练习:.一个四位整数 输出它的千位,百位,十位,个位 数字. ; ; % ; % ; ; Console.WriteLine("千位数" + b+" 百位数" ...
- nodejs入门教程之http的get和request简介及应用
nodejs入门教程之http的get和request简介及应用 前言 上一篇文章,我介绍了nodejs的几个常用的模块及简单的案例,今天我们再来重点看一下nodejs的http模块,关于http模块 ...
- github 入门教程之 github 访问速度太慢怎么办
github 是全世界最流行的开源项目托管平台,其代表的开源文化从根本上改变了软件开发的方式. 基本上所有的需求都能从 github 上或多或少找到现成的实现方案,再也不用重头开始造轮子而是自定义轮子 ...
- webpack入门教程之Hello webpack(一)
webpack入门教程系列为官网Tutorials的个人译文,旨在给予想要学习webpack的小伙伴一个另外的途径.如有不当之处,请大家指出. 看完入门教程系列后,你将会学习到如下内容: 1.如何安装 ...
随机推荐
- JAVA-常用集合类型转换例子
package com.net.xinfang.reflect; import java.util.ArrayList; import java.util.Arrays; import java.ut ...
- 开发C语言的3款神器,VS2019、VScode和IntelliJ Clion
一.Visual Studio 2019环境安装配置+代码调试 环境安装配置 首先我们要在Visual Studio官方网站去下载安装包 进入官网后会发现有三种版本可供下载,分别是社区版.专业版和企业 ...
- 有必要了解的大数据知识(一) Hadoop
前言 之前工作中,有接触到大数据的需求,虽然当时我们体系有专门的大数据部门,但是由于当时我们中台重构,整个体系的开发量巨大,共用一个大数据部门,人手已经忙不过来,没法办,为了赶时间,我自己负责的系统的 ...
- python-6-1
1.定义一个时间戳转换成格式化时间的函数import time def timestamp_to_fomat(timestamp= None,format ='%Y-%m-%d %H:%M:%S' ) ...
- PTA 二叉树的层次遍历
6-6 二叉树的层次遍历 (6 分) 本题要求实现给定的二叉树的层次遍历. 函数接口定义: void Levelorder(BiTree T); T是二叉树树根指针,Levelorder函数输出给 ...
- 总结下js排序算法和乱序算法
其实本人最怕的就是算法,大学算法课就感觉老师在讲天书,而且对于前端来说,算法在实际的应用中实在是很有限.毕竟算法要依靠大量的数据为基础才能发挥出算法的效率,就浏览器那性能,......是吧,退一万步说 ...
- 拖拽方式生成Vue用户界面
前一阵子拜访了一些小伙伴,大家都表示苦前端太久了,需要花费不少时间在前端开发上.本着在不损失灵活性的前提下尽可能提高开发效率的原则,作者尝试在框架内集成了拖拽方式生成Vue用户界面的功能作为补充, ...
- Chrome89针对sessionStorage的更新导致数据共享问题
最近将chrome更新到最新的版本,然后发现以前可以正常使用的功能无法使用了,经过分析后发现是浏览器新版本才出现的问题,今天记录以下. 一.遇到的问题 我们具体的问题场景,在A页面中需要打开B页面,同 ...
- 封装一个处理 react 异常的最简 ErrorBoundary 组件 🎅
前言 从 React 16 开始,引入了 Error Boundaries 概念,它可以捕获它的子组件中产生的错误,记录错误日志,并展示降级内容,具体 官网地址. 错误边界避免一个组件错误导致整个页面 ...
- Bounding Volume Hierarchies 加速结构
背景 光线与物体求交是光线追踪的主要时间瓶颈. 如果不进行优化,则对每条光线,我们都需要遍历场景中的全部物体并求交.而现在想建模一个小物体的表面,往往要几千甚至几万个三角形,一个商业级产品,屏 ...