C++基础学习(02)--(数据类型,变量类型,变量作用域,常量,修饰符类型)
文章目录
- 目录
- 一. 数据类型
- C++ 中的数据类型
- typedef
- enumeration枚举类型
- c++中变量类型
- 二.变量作用域
- 三.常量
- 四.修饰符类型
目录
一. 数据类型
C++ 中的数据类型
使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当您创建一个变量时,就会在内存中保留一些空间。
您可能需要存储各种数据类型(比如字符型、宽字符型、整型、浮点型、双浮点型、布尔型等)的信息,操作系统会根据变量的数据类型,来分配内存和决定在保留内存中存储什么。
一些基本类型可以使用一个或多个类型修饰符进行修饰:signed , unsigned ,short ,long
下表显示了各种变量类型在内存中存储值时需要占用的内存,以及该类型的变量所能存储的最大值和最小值。
注意:不同系统会有所差异。
从上表可得知,变量的大小会根据编译器和所使用的电脑而有所不同。
下面实例会输出您电脑上各种数据类型的大小。
#include<iostream>
#include<string>
#include <limits>
using namespace std;
int main()
{ cout << "short: \t\t" << "所占字节数:" << sizeof(short); cout << "\t最大值:" << (numeric_limits<short>::max)();cout << "\t\t最小值:"<< (numeric_limits<short>::min)() <<endl;
}
typedef
enumeration枚举类型
例子
#include <iostream>
using namespace std;
enum time {first,second,third,forth,fifth};int main()
{enum time a=fifth;if (a==fifth) {cout << a <<endl;cout << "Succeed!";}return 0;
}
运行结果:
4
Succeed!
c++中变量类型
变量其实只不过是程序可操作的存储区的名称。C++ 中每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。
变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。大写字母和小写字母是不同的,因为 C++ 是大小写敏感的。
基于前一章讲解的基本类型,有以下几种基本的变量类型,将在下一章中进行讲解
注意
C++ 也允许定义各种其他类型的变量,比如枚举、指针、数组、引用、数据结构、类等等,这将会在后续的章节中进行讲解。
变量只能定义一次,可以使用extern关键字在多个文件中声明多次
例子
#include <iostream>
using namespace std;// 变量声明
extern int a, b; //在头文件被申明过
extern int c;
extern float f;int main ()
{// 变量定义int a, b;int c;float f;// 实际初始化a = 10;b = 20;c = a + b;cout << c << endl ;f = 70.0/3.0;cout << f << endl ;return 0;
}
当上面的代码被编译和执行时,它会产生下列结果:
30
23.333
**同样的,在函数声明时,提供一个函数名,而函数的实际定义则可以在任何地方进行。**例如:
// 函数声明
int func();int main()
{// 函数调用int i = func();
}// 函数定义
int func()
{return 0;
}
二.变量作用域
在程序中,局部变量和全局变量的名称可以相同,但是在函数内,局部变量的值会覆盖全局变量的值。下面是一个实例:
全局变量系统自动初始化,局部变量系统不会自动初始化
定义变量时,最好进行初始化
#include <iostream>
using namespace std;// 全局变量声明
int g = 99;// 函数声明
int func();int main()
{// 局部变量声明int g = 10;cout << g << endl;int kk = func();cout << kk << endl;return 0;
}// 函数定义
int func()
{return g;
}
运行结果:
10
99
运行结果:
此时的全局变量为:20
被改变的全局变量为:30
此时的全局变量为:30
三.常量
const 限定符定以后是不可以改变的,所以在定义时赋初值,否则是错误的 ;除非这个变量是用extern修饰的外部变量
四.修饰符类型
explicit构造函数是用来防止隐式转换的。请看下面的代码:
class Test1
{public:Test1(int n){num=n;}//普通构造函数
private:int num;
};
class Test2
{public:explicit Test2(int n){num=n;}//explicit(显式)构造函数
private:int num;
};
int main()
{Test1 t1=12;//隐式调用其构造函数,成功Test2 t2=12;//编译错误,不能隐式调用其构造函数Test2 t2(12);//显式调用成功return 0;
}
Test1的构造函数带一个int型的参数,代码23行会隐式转换成调用Test1的这个构造函数。而Test2的构造函数被声明为explicit(显式),这表示不能通过隐式转换来调用这个构造函数,因此代码24行会出现编译错误。
普通构造函数能够被隐式调用。而explicit构造函数只能被显式调用
C++基础学习(02)--(数据类型,变量类型,变量作用域,常量,修饰符类型)相关推荐
- ArcGIS基础学习:数据类型
ArcGIS基础学习:数据类型 前言 最近喜欢上了学习地理统计的相关内容,准备开始学习,会不定时修改. 第一章 数据类型 一.arcgis数据类型: 1.数字型:整数型.单精度浮点型.双精度浮点型 2 ...
- C++中的修饰符类型
1.Cpp修饰符类型 C++允许在char.int 和double数据类型前放置修饰符.修饰符用于改变基本类型的含义,所以它更能满足各种情境的需求.下面列出了数据类型修饰符: signed unsig ...
- JAVA修饰符类型(public,protected,private,friendly)
JAVA修饰符类型(public,protected,private,friendly) public的类.类属变量及方法,包内及包外的不论什么类均能够訪问: protected的类.类属变量及方法, ...
- python 声明变量类型_python基础学习03数据类型和变量
数据类型和变量 1. 数据类型 1.1 整数 Python中不限制整数正负及大小,例如:1,-1,100,-100等等.计算机常用十进制和十六进制表示数值,比如十六进制表示方法是用前缀0x加后缀0-9 ...
- python保存数据型变量_Python基础学习笔记(一)变量与数据类型
https://m.toutiao.com/is/J3fN6eK/ Python是一门易学的面向对象的程序设计语言,可以轻易地完成界面.文件.封装等高阶需求,可移植性好,有非常多功能强大的库与包,如N ...
- python 去掉双引号_Python基础学习笔记(一)变量与数据类型
Python是一门易学的面向对象的程序设计语言,可以轻易地完成界面.文件.封装等高阶需求,可移植性好,有非常多功能强大的库与包,如Numpy(数值计算).SciPy(数学.科学与工程计算).Matpl ...
- Spark基础学习笔记09:Scala变量与数据类型
文章目录 零.本讲学习目标 一.变量声明 (一)简单说明 (二)利用val声明变量 1.声明方式 2.案例演示 (三)利用var声明变量 1.声明方式 2.案例演示 (四)换行输入语句(续行) (五) ...
- 【Python基础学习笔记day08】python变量的基本使用+变量定义ipython+pycharm+超市买苹果+变量的类型+关于函数+变量的格式化输出+个人名片案例
变量的基本使用 文章目录 变量的基本使用 目标 01. 变量定义 1) 变量演练1 -- iPython 2) 变量演练 2 -- PyCharm 3) 变量演练 3 -- 超市买苹果 思考题 02. ...
- c语言基本数据类型常量,C语言基础学习基本数据类型-变量和常量
变量和常量 什么是变量和常量?有些数据在程序运行前就预先设定,并在运行过程中不发生变化,称之为常量:有些数据在程序运行中可能发生变化或被赋值,称之为变量. 使用变量前必须先声明一个变量.变量定义的语法 ...
最新文章
- android activity启动流程_1307页!一线大厂Android面试全套真题解析!
- Nav- buttons和$ionicView
- 【ARM】Tiny4412裸板编程之异常
- 从基于直方图的Graph-Cut到Grab-Cut
- Apollo进阶课程㊷丨Apollo实战——车辆与循迹驾驶能力实战
- 晋职称不考外语 计算机,评职称不考外语计算机的价值导向
- FTP 编写 4:命令解析
- Type Cannot change version of project facet Dynamic Web Module to 3.0
- Javascript 脚本错误.
- weblogic-修改控制台登录密码
- HTTP请求和MIME介绍
- easyexcell导出专题
- CentOS安装网络驱动
- 浏览器中在线预览pdf文件(不使用插件)
- Robocode 圆周瞄准算法机器人
- Arm云游戏及虚拟化技术沙龙,Arm中国,NVIDIA,腾讯及百度等为你分享超强技术干货
- 算法训练营 图的应用(拓扑排序)
- 用EasyHMI做的工程示例一览
- JL 杰理 AC692N系列TWS 蓝牙音箱 开发
- \xe5\x8d\xa0\xe7\x94\xa8\xe3\x80\x82,16进制乱码转化为可读字符
热门文章
- WINCE6.0 DM.EXE 激活驱动失败的原因之一
- Oracle客户端与java_Oracle 谈 JavaFX 及 Java 客户端技术的未来
- python免费学校_清华大学,的python学习路线,免费分享给小白福利
- 【转】Dynamics CRM 365零基础入门学习(二)Dynamics 插件注册的基本流程
- SharePoint无代码工作流设计开发实例——交通费报销流程(一)
- 【Python CheckiO 题解】Between Markers
- Selenium 显式等待条件及其含义
- 连续反应matlab,MATLAB和Monte Carlo法在连续反应动力学中的应用.pdf
- 增效工具_【危中寻机】降本增效生存之道 运用IE基础工具提升制造效率
- 【CodeForces - 518D】Ilya and Escalator(概率dp,数学期望)