C++语言基础——02数据的存取
常量
常量是指在程序中使用的一些具体的数、字符。在程序运行过程中,其值不能更改。如123、1.23、'a'、"abc"、True等。
常量的定义
const 类型 常量名 = 常量值
例如:const double PI=3.1415926
变量
计算机中有个存储单元,存储单元中存放了一些数据。这些数据在程序的运行过程中可能变化或被复制,我们趁这个存储单元叫做变量。
也就是说变量代表了一个存储单元,其中的值是可以改变的。依据放入变量中数据可能出现的大小,为了能够规范开辟空间,高级语言把数据进行了分类,称之为数据类型,在使用变量前,需要定义变量的数据类型,系统依据定义的数据类型进行空间的分配。
如何通俗地去理解变量呢,与生活中的场景联系起来。将自己家的房子比作计算机家中零零碎碎的物品就是计算机当中的数据。家中的物品我们会分门别类地放到不同地容器中存储,比如书放在书柜中,水倒在水杯中。计算机中的数据也是一样,不同类型的数据放在不同的容器中。而这个容器就是我们所说的变量。且好比谁不能倒在书柜中,书不能放杯子里,计算机中的数据也需要根据类型放到不同的变量中。
数据类型
常用的数据类型
| 类型 | 标识符 | 占字节数 | 数值范围 |
|---|---|---|---|
| 整型 | int | 4(32位) | -2147483648~2147483647 |
| 超长整型 | long long | 8(64位) | -9223372036854775808~-9223372036854775807 |
| 单精度浮点型 | float | 4(32位) | -3.4E-38~3.4E+38 |
| 双精度浮点型 | double | 8(64位) | -1.7E+308~1.7E+308 |
| 字符型 | char | 1(8位) | ASCII码 |
| 布尔型 | bool | 1(8位) | 真true或假false之一 |
使用浮点类型数值(小数)时,推荐使用double类型进行处理。
可以使用关键字sizeof来获取变量或数据类型的空间大小。
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int a;
float b;
double b2;
char c;
printf("%d %d %d %d\n",sizeof(int),sizeof(float),sizeof(double),sizeof(char));
printf("%d %d %d %d",sizeof(a),sizeof(b),sizeof(b2),sizeof(c));
return 0;
}

变量的声明
任何变量在被使用时,都要提前声明好。申明就像是向计算机打报告,申请出一片空间以供数据使用。空间未经允许不得擅自使用。
声明格式:数据类型 变量名
例
整数类型变量声明:int a;
浮点类型变量声明:float b;
字符类型变量声明:char c;
变量赋值
使用赋值符号(=)进行赋值。
形如:
int a;
a=4;//赋值
注意和数学中的等于号进行区分。赋值符号是将符号右边的表达式结果赋值一份给左边的变量。所以赋值符号的左边不能够是表达式或常量必须是一个变量。
初始化
在实际使用时可以把变量定义与赋值合并成一句。
int a=0;
作用是在向计算机申请空间的同时,进行赋值操作。建议在定义变量时及时进行初始化,防止后续计算出现问题。
int s;
s=s+7;//错误
cout<<s;
如上面的程序,由于s未初始化,初始值未知,在后续计算时结果就不确定。
变量的输出
变量的输出和01_一切的开始中语句的输出是相似的都是可以使用cout来进行输出,记得加上命名空间的引用。
格式:cout<<变量;
#include <iostream>
using namespace std;
int main(){
int a=4;
cout<<a;
return 0;
}
若是多个输出内容,则使用链式的连接方式输出即可。
#include <iostream>
using namespace std;
int main(){
int a=4,b=5;
cout<<a<<" "<<b;
return 0;
}
除了cout以外,也可以使用其他方式进行输出。比如printf。使用printf需要加上头文件cstdio。
printf在输出时需要注意格式。%d对应整数型变量,%f对应浮点型变量,%c对应字符型变量。顺序和类型需要对应好才能正确输出内容。
#include <cstdio>
int main(){
int a=4;
float b=3.14;
char c='A';
printf("%d %f %c",a,b,c);
return 0;
}
变量的输入
变量的输入使用cin来进行。和cout一样,需要头文件iostream以及引用命名空间。
格式:cin>>变量;
多个变量进行输入时,也可以使用链式的方式进行输入。
符号注意和输出进行区分。
#include <iostream>
using namespace std;
int main(){
int a=0;
float b=0;
char c=0;
cin>>a>>b>>c;
cout<<a<<" "<<b<<" "<<c;
return 0;
}
除了使用cin输入以外也可以使用scanf()进行输入。将scanf()和printf()看作一对,都是需要添加头文件cstdio,且也需要进行格式对应。
#include <cstdio>
int main(){
int a=0;
float b=0;
char c=0;
scanf("%d %f %c",&a,&b,&c);
printf("%d %f %c",a,b,c);
return 0;
}
注意输入时,变量前需要加上&符号,作用是获取变量地址。
有格式要求的输入输出
printf()
- 输出时保留小数点后n位。
printf("%.nf",变量);
#include <cstdio>
int main(){
float b=3.14159;
printf("%.3f",b);//保留小数点后3位
return 0;
}
- 输出的数字占n个字符场宽(右对齐)
printf("%nd",变量)
#include <cstdio>
int main(){
int a=5,b=6;
printf("%5d %5d",a,b);//数字占5个场宽
return 0;
}
- 输出的数字占n个字符场宽且左对齐
printf("%-nd",变量)
#include <cstdio>
int main(){
int a=5,b=6;
printf("%-5d %-5d",a,b);//数字占5个场宽且左对齐
return 0;
}
scanf()
- 按具体要求进行输入
按 年-月-日 的格式输入日期。
#include <cstdio>
int main(){
int year,month,day;
scanf("%d-%d-%d",&year,&month,&day);
printf("%d-%d-%d",year,month,day);
return 0;
}

若不按照scanf中的格式进行输入则输入就会存在问题。

变量的运算
简单的加减乘除
在程序中的符号对照
| 算术符号 | 程序符号 |
|---|---|
| 加 | + |
| 减 | - |
| 乘 | * |
| 除 | / |
#include <iostream>
using namespace std;
int main(){
int a,b;
cin>>a>>b;//输入两个整数
cout<<a+b<<endl;//输出加法运算结果
cout<<a-b<<endl;//输出减法运算结果
cout<<a*b<<endl;//输出乘法运算结果
cout<<a/b;//输出除法运算结果
return 0;
}
注意除法计算,如5除2,计算出的结果是2。因为是两个整数在进行计算,最后的结果也是整数类型。
混合运算
整数和整数计算,得到的结果是整数类型。浮点数和浮点数计算结果是浮点数类型。
那么整数和浮点数计算呢,它的结果是浮点数类型。
利用这样的特性,如果两个整数进行除法,但我想得到精确的小数结果,可以采用下面的方式进行转换。
#include <iostream>
using namespace std;
int main(){
int a,b;
cin>>a>>b;//输入两个整数
cout<<1.0*a/b;//输出精确的小数结果
return 0;
}
字符类型变量
ASCII码表

每个字符都对应着一个ASCII码值。
#include <iostream>
using namespace std;
int main(){
char c;
cin>>c;
cout<<int(c);//强制转换乘整数,输出的是字符对应的码值
return 0;
}

字符类型计算
如果输入两个字符数字进行计算会怎么样呢?
#include <iostream>
using namespace std;
int main(){
char a,b;
cin>>a>>b;
cout<<a+b;
return 0;
}

此时,结果是99不是3。因为计算机是将他们的ASCII码值进行相加计算了。
那么如何得到正确的计算结果?
可以利用ASCII码的连续性,利用差值来进行计算。
#include <iostream>
using namespace std;
int main(){
char a,b;
cin>>a>>b;
cout<<(a-'0')+(b-'0');
return 0;
}

简单应用
变量交换
利用第三方变量进行中转
#include <iostream>
using namespace std;
int main(){
int a,b,tmp;
cin>>a>>b;
tmp=a;
a=b;
b=tmp;
cout<<a<<" "<<b;
return 0;
}
利用和差进行交换
#include <iostream>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
a=a+b;
b=a-b;
a=a-b;
cout<<a<<" "<<b;
return 0;
}
大小写转换
可以观察ASCII码表,可以发现大小写字母之间码值相差32。小写字母码值比大写字母码值大。那么利用这个差值就可以进行转换了。
大写转小写
#include <iostream>
using namespace std;
int main(){
char c;
cin>>c;
cout<<char(c+32);
return 0;
}
小写转大写
#include <iostream>
using namespace std;
int main(){
char c;
cin>>c;
cout<<char(c-32);
return 0;
}
C++语言基础——02数据的存取的更多相关文章
- java语言基础02
一.Java语言基础(常量的概述和使用)(掌握) 1:什么是常量 就是在程序的执行过程中其值不发生改变的量. 2:Java中常量的分类 (1):字面值常量 (2):自定义常量(面向对象部分讲解) 3: ...
- Java 语言基础 02
语言基础·二级 顺序结构语句 * A:什么是流程控制语句 * 流程控制语句:可以控制程序的执行流程. * B:流程控制语句的分类 * 顺序结构 * 选择结构 * 循环结构 * ...
- C#语言基础02
字符串:string s="ab";string s1="a\nb";//n:newline或者next的意思. string s="a\\b&quo ...
- R语言基础篇——数据读写
1.键盘输入数据(适合小数据集) #创建一个指定模式但不含数据的变量 mydata<-data.frame(age=numeric(0),gender=character(0),weight=n ...
- R语言基础篇——数据对象
1.基本数据类型(numeric,logical,character,NA,double,complex,integer) 2.日期变量 常用函数 Sys.Date()-返回系统当前的日期,Sys.t ...
- Java入门 - 语言基础 - 02.开发环境配置
原文地址:http://www.work100.net/training/java-environment-setup.html 更多教程:光束云 - 免费课程 开发环境配置 序号 文内章节 视频 1 ...
- C语言基础02
1. .so -- shared object,用户层的动态库 ..ko -- kernel object,内核模块,可以在Linux内核起来之后动态的加载和卸载. 2.
- 数据结构的C语言基础
数据结构的C语言基础 1. 数据输出 printf()函数为格式输出函数,它存在于标准函数库中,在C语言程序中可以直接调用,但程序源文件的开头必须包含以下命令: #include < stdi ...
- 02 java语言基础
常量:字面值常量(字符串,字符,整数,小数,布尔,null),自定义常量,''这个不是字符常量,""这个是字符串常量 进制: 02.01_Java语言基础(常量的概述和使用) A: ...
随机推荐
- linux替换项目jar包
查看服务是否启动,如果启动,则需要根据 pid 停止服务: # ps -ef | grep xxx.jar 杀掉该项目进程 # kill -9 pid号 再次查看进程 # ps -ef | grep ...
- 我对js数据类型的理解和深浅(copy)的应用场景
本人毕业一所专科院校,所学专业是计算机应用技术,在大学时对前端有了一定的了解之后,觉得自己对前端的兴趣十分强烈,开始自学前端,一路上也是坎坎坷坷,也有想要放弃的时候,还好坚持了下来,并且从事前端开发已 ...
- .NET Core +Angular 项目 部署到CentOS
前言: 最近公司需要开发项目能在Linux系统上运行,示例开发项目采用.Net Core + Angular开发:理论上完全支持跨平台. 但是实践才是检验真理的唯一标准:那么还是动手来验证实现下:过程 ...
- 浏览器小程序(Browser Applet)闪亮登场
2017 年 1 月 9 日,微信小程序横空出世.随后,支付宝小程序.今日头条小程序.百度智能小程序.360小程序等纷纷推出,自此国内软件功能扩展领域进入到了小程序时代,小程序为丰富其宿主软件的功能和 ...
- 二、JMeter的图形界面认识
JMeter的图形界面认识 JMeter是一个工具,应该去认识它,熟悉它,现在的能力还没达到去优化.改造它能力,所以先花时间熟悉它. JMeter的界面主要分为:菜单栏.工具栏.计划树标签栏.内容栏 ...
- 安卓 Android Studio 下载
http://www.android-studio.org/ 下载地址 https://blog.csdn.net/qq_41976613/article/details/91432304 ...
- Unity GameObject
GameObject 游戏对象 GameObject是unity所有实体的基类 gameObject 获取当前脚本所挂载的游戏对象 一般来说,在属性视图中能看到或修改的属性,我们同样可以在脚本中获取并 ...
- ssh 免密码登陆设置不成功
记一次centos6设置免密码登陆设置不成功的解决.自己挖的坑自己填. ssh 免密码登陆设置( 正常情况下是这样的,设置成功后登陆主机是不需要密码的) [root@master .ssh]# ssh ...
- vue第二单元(webpack的配置-学习webpack的常用配置)
第二单元(webpack的配置-学习webpack的常用配置) #课程目标 掌握webpack的常用配置 掌握如何根据实际的需求修改webpack的对应配置 了解webpack-dev-server的 ...
- [日常摸鱼]bzoj1444 [JSOI2009]有趣的游戏——AC自动机+矩阵
今天学校跳蚤市场摆摊聚众吸毒打call,东西卖了一百多好开心_(:з」∠)_ (然后大家中午就去吃了一顿好的x) 下午听演讲然后现在来填坑orz(其实是昨晚的坑) 题目:bzoj1444 先用字符串构 ...