可变与不可变的容器——变量与常量的定义和使用

1.定义变量的基本语法

    我们知道,在程序运行的过程中,难免会需要存储一些数据。这个时候就需要变量出场了。
&np; 变量,顾名思义,就是可变的量。可以把它看做存储数据的容器。其基本语法如下:

变量类型 变量名称1,变量名称2…变量名称n;

比如:

int money1,money2;
double high_m=1.56;

2. 各种变量类型介绍

2.1.整形

C++基本整形及其存储范围如下:

变量类型称呼存储范围计算出来的存储范围
short短整型-28 ~ 28-1-3万 ~ 3万
int整形-216 ~ 216-1-21亿 ~ 21亿
long长整型-216 ~ 216-1或-232 ~ 232-1-21亿 ~ 21亿或-922 ~ 922亿亿
long long超长整形-232 ~ 232-1-922 亿亿~ 922亿亿

  以上的变量类型都是“整型变量”。顾名思义,就是用来存放整数的变量。
  思考:
      1.如果在里面强行存放小数会怎么样呢?
      2.long long的存储范围那么大,存储整形用long long就够了,为什么还要有其它的整形变量类型呢

  这两个问题会在后面统一解答。

2.2.浮点型(小数)

  C++基本浮点型及其存储范围如下:

变量类型称呼存储范围
float单精度浮点型3.4e-38~3.4e+38
double双精度浮点型1.7e-308~1.7e+308

浮点型就是存放小数的类型。

  思考:
      整形有很多就算了,为什么就连浮点型都不只有一种?
      这个问题也会在后面解答。

3.变量名命名规则

3.1.规则介绍

    所有的变量和常量名都要遵循以下规则:
      1.名称各不相同(大小写敏感,如Aswer和aSWER不算同一个变量)
      2.只能由字母,数字下划线组成
      3.不能由数字开头
      4.不能是关键字(后面会讲)
    比如:
    int name,name;(不合法,即不能通过编译)
    short kkkcs_03;(合法,即能通过编译)
    double _666;(合法)
    float 0zero;(不合法)

3.2.代码示例

    可以自己上Dev-C++上测试一下

int name,name;
short kkkcs_03;
double _666;
float 0zero;

4.变量的赋值

    我们在前面已经学习了如何定义一个变量。那么怎样把值放到变量里面去呢(赋值)?主要有以下几种方法:

4.1.在定义变量的时候直接赋值:

4.1.1.基本语法:

变量类型 变量名称=初值;

4.1.2.代码示例:

int a=10;
int b=1+1,c=a+b;//用表达式赋值
int d=c;//将c的值传递给d

完整代码:

#include<iostream>
using namespace std;
int main(){
    int a=10;
    int b=1+1,c=a+b;//用表达式赋值
    int d=c;//将c的值传递给d
    cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
    //输出变量,其中" "代表输出一个空格,可以用' '代替
    return 0;
}

4.2.在运行程序的过程中赋值

4.2.1.基本语法

变量名=值;

4.2.2.代码示例:

a=100;//直接赋值
b=5+5;//表达式赋值
d=c;//将c的值传递给d

完整代码:

#include<iostream>
using namespace std;
int main(){
    int a,b,c=25;
    a=100;//直接赋值
    b=5+5;//表达式赋值
    a=c;//将c的值传递给a,相当于直接把a以前的值丢弃
    cout<<a<<" "<<b<<" "<<c<<endl;
    return 0;
}

4.3.输入数据

    前面的程序都是在代码中给变量赋值。那我们可不可以让用户输入变量的数值呢?使用cin输入流就可以解决这个问题。语法如下:

cin>>变量1>>变量2>>…>>变量n;

代码示例:

#include<iostream>
using namespace std;
int main(){
    int a;
    cin>>a;//输入a的值
    cout<<a<<endl; 
    return 0;
}

运行上面的程序,这时的黑框框就没有直接输出了,如下图:
在这里插入图片描述
可以看到这里有一个光标在闪烁,我们在键盘上点击1,如下图:
在这里插入图片描述
接下来再按一下回车键(Enter)就完成了。
在这里插入图片描述
那多个数据该如何输入呢?很简单,只需要用空格或者回车键分隔就可以了。比如输入三个数据:
在这里插入图片描述
代码:

#include<iostream>
using namespace std;
int main(){
    int a,b,c;
    cin>>a>>b>>c;//输入多个数的值
    cout<<a<<" "<<b<<" "<<c<<endl; 
    return 0;
}

当然,这里输入浮点数的值也是可以的。

4.4.显式类型转换和隐式类型转换

4.4.1.显式类型转换和精度丢失

    还记得前面的思考吗?想要解决整形存储小数的问题,我们就需要将浮点类型转换为整形,代码如下:

#include<iostream>
using namespace std;
int main(){
    int a;
    double f;
    cin>>f;
    a=int(f);//等价于a=(int)f
    cout<<a<<endl;
    return 0;
}

在上面的代码中,我们可以得知显式类型转换语法为:

变量1=(变量1的类型)变量2

或者这么表示:

变量1=变量1的类型(变量2)

    运行上面的代码,得到输出1。这是因为小数转换成整数时只会保留整数部分,小数部分会被舍去。也可以当做是向下取整。这就是精度丢失。因为造成了精度丢失,所以显式类型转换和隐式类型转换都可以被叫做强制转换

根据这个特性,我们可以得出如何将一个小数四舍五入,代码如下:

#include<iostream>
using namespace std;
int main(){
    double f;
    cin>>f;
    cout<<int(f+0.5)<<endl; 
    return 0;
}

可以自己思考一下原理哦。

4.4.2.隐式类型转换和注意事项

    既然有了显式类型转换,那有没有隐式类型转换呢?但是当然有。当我们直接将一个小数的值赋给整数,就是隐式类型转换的过程。代码如下:

#include<iostream>
using namespace std;
int main(){
    int a;
    double f;
    cin>>f;
    a=f;//隐式类型转换
    cout<<a<<endl;
    return 0;
}

这段代码和上面的代码效果是一样的。例如,输入2.512时输出2。

注意
    1.虽然各种整形和各种浮点型的存储范围大有不同,但是它们所占有的内存空间也是不相同的。例如int占用内存空间的4个字节,而long long占用内存空间的8个字节。所以一般定义整型变量的时候都是使用int。而如果题目给出的数据范围很大时就要使用long long了。浮点型也是同样的,在写程序时一般直接使用double
    2.在使用变量时,如果没有赋初值,就相当于用没洗过的碗盛菜。以前这个碗装了什么都不知道。比如:

#include<iostream>
using namespace std;
int main(){
    int a;
    cout<<a;//错误示范,请勿模仿
    return 0;
}

所以给变量赋初值是一个很好的习惯。除非后面要输入数据,不然都建议给变量赋一个初值

5.常量的定义和使用

    既然有了变量,那就会有常量。顾名思义,常量就是不可以改变的量。一般用大写字母表示。定义一个常量的基本语法如下:

const 常量类型 常量名=数据;

    注意:常量的值要在定义时就确定好,跟变量的赋值一样,可以是一个数据,可以是一个变量或常量,也可以是一个表达式。代码示例如下:

const int a=10;
const double PI=3.1415926;

注意
    在运行程序的过程中,应保证常量不被以任何形式的修改。不然就会报错,比如:

#include<iostream>
using namespace std;
int main(){
    const double PI=3.1415926;
	PI=3.14;
	cout<<PI<<endl;
    return 0;
}

在我们点击编译运行后就会变成这样:
在这里插入图片描述

    在底下的编译器选项中就有我们的错误信息:[Error] assignment of read-only variable ‘PI’。也就是常量"PI"被修改了,只有将它改过来成才能编译成功。

    我们发生的第一个错误所在的行会被标红显示,这样可以帮助我们更快地找到错误。

    在以后写代码的时候,错误是会经常出现的。我们可以自己上网查一查,也可以去问一问老师。有的时候程序的错误也会是逻辑错误。这就需要我们自己去检查和改正了。

6.课后作业

苹果采购

下期预告:数学运算符与数学函数

喜欢就订阅专辑吧!

【蓝胖子编程教育简介】
蓝胖子编程教育,是一家面向青少年的编程教育平台。平台为全国青少年提供最专业的编程教育服务,包括提供最新最详细的编程相关资讯、最专业的竞赛指导、最合理的课程规划等。本平台利用趣味性和互动性强的教学方式,旨在激发孩子们对编程的兴趣,培养他们的逻辑思维能力和创造力,让孩子们在轻松愉快的氛围中掌握编程知识,为未来科技人才的培养奠定坚实基础。
欢迎扫码关注蓝胖子编程教育
在这里插入图片描述

  • 26
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值