(如果没有账户而不能复制代码,请在上方地址栏前面加上“read:”打开阅读器模式)
如果你背完了框架,那么就可以学C++中的第一个操作——变量
变量就是存储数据的东西,它的格式是:变量类型 变量名 = 变量的值(可以省略这步,但是类型要匹配),这里的“=”是赋值而不是相等!
1、基本方式
我给你们做了个表,给你们看看变量类型有多少种:
| 变量类型 | 数据范围 | 注意事项 |
| int类型(整形类型) | -2,147,483,648~2,147,483,647 | 注意数字溢出,竞赛时看数据范围! |
| double类型(双精度浮点类型) | 约 ±1.7e308(约15位有效数字) | 精度问题!不能直接相加并判断! |
| float类型(单精度浮点类型) | 约 ±3.4e38(约6~7位有效数字) | 同double类型! |
| char类型(字符类型) |
-128~127(有符号)/ 0~255(无符号) | 遇到多字节直接截断,编译器警告+不可见字符 |
| bool类型(布尔类型) | 0或1,如果初始化非0数字,默认1,遇到加减法时,提升到int | 在初始化时只要数字非0,默认存为1。 |
| long long类型(长整型) | -9,223,372,036,854,775,808~ 9,223,372,036,854,775,807 | 同int类型! |
| string类型(字符串类型) | 受系统限制,动态分配 | 重分配后迭代器失效、指针错误! |
变量的定义方法:
int a=3005;
//变量类型 变量名=变量值; (=...可以省略)
这段代码定义了名为“a”的整型变量,值为3005。
在这里,你或许明白了变量的存储方式,但是调皮的你怎么可能到此为止?于是你写了下面这个代码:
char a=100;
这段代码会编译错误吗?答案是:肯定不会,这里的100会被隐式转换成char类型,结果是'D',因为D的ASCLL码是100,说到ASCLL码,你会感到陌生,没关系,看看下图:
你会感到非常的复杂,没关系,你只需要记住下面一点:
'0'的ASCLL码是48,' '的ASCLL码是32,'A'的ASCLL码是65,'a'的ASCLL码是97,后面的依次相加即可(空格除外)
隐式转换就是指在赋值的时候如果变量类型不匹配,会尝试转换变量类型,如果转换失败,会编译错误或者运行时错误
例如:
//1
int a=3.14 //a=3
//2
double x=10/3 // '/'在这里是除法,而这里的结果是3而不是3.333…
//3
char* q=100; //运行时错误
当然,你也可以强制转换,强转就是在数字前面写“(目标类型)”,下面是代码示例:
int a=65;
char b=(char)(a) //b='A',建议在值上打括号
2、全局变量
有一种变量叫做全局变量,也就是任何函数都能访问的变量,例如:
#include<iostream>
using namespace std;
int a=20 //全局变量
int main(){
cout<<a; //输出a
return 0;
}
相反,还有一种叫做局部变量,仅当前的函数/循环/分支(后面要学的)才能访问,就比如以下的代码会出现编译错误:
#include<iostream>
using namespace std;
int main(){
if(true){ //如果括号内容成立就进入,true=真,内容永远成立
int a; //定义a
}
cout<<a<<endl; //编译错误!
return 0;
}
因为变量a在分支语句内,所以是局部变量,分支过后就被销毁,导致我们想要输出a时触发编译错误。
3、特殊值
这是一个拓展知识点,了解即可,我怕你的大脑宕机。
有3个特殊数字,分别是INF(无穷大)、NaN(非数字)、-INF(无穷小)。(IEEE 754规定)
这些数的产生方式很简单:
double x=0.0/0.0; //返回NaN
double y=1.0/0.0; //返回INF
double z=-1.0/0.0; //返回-INF
而且NaN≠NaN,因为NaN不是数字
4、总结
本篇学了变量的定义、赋值和ASCLL码、隐式转换,还有全局变量和特殊值,如果有不会的,请复看一遍!
5、习题(满分60分)
一、填空题。(每空3分,合计30分)
(1)特殊值分三种,分别是( )、( )、( )。
(2)'0'的ASCLL码是( ),'A'的ASCLL码是( ),'a'的ASCLL码是( )
(3)将浮点型数字“3.14”赋给整型变量“a”,结果是( )。
(4)int范围的类型是( )、( )。
(5)( )变量所有函数都可以调用。
二、判断题。(每题6分,共30分)
(1)下面代码会编译错误。( )
string e="hello"
int f=(int)e;
(2)下面代码输出“True”。( )
double nan1=0.0/0.0;
double nan2=0.0/0.0;
if(nan1==nan2){ //如果nan1等于nan2
cout<<"True"<<endl; //输出“True”
}else{ //否则
cout<<"False"<<endl; //输出“False”
}
(3)下面代码输出“nan”。( )
double inf1=1.0/0.0;
double inf2=1.0/0.0;
std::cout<<inf1-inf2; //输出inf1-inf2
(4)nan全写是None a Number。( )
(5)全局变量会自动初始化。( )
6、答案(写完之后再看!)
一、1、 NAN INF -INF 2、 48 65 97 3、 3 4、 -2,147,483,648 2,147,483,647
5、全局
二、1.√ 2.× 3.√ 4.× 5.×
7、后记
希望本篇文章对小白有帮助,如果有错误,欢迎大佬来纠错!
如果作者写得好,收藏一下吧,未免以后用得着呢?

被折叠的 条评论
为什么被折叠?



