资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

[C++]变量-创新互联

目录
  • 前言
  • 一、引入问题
  • 二、变量声明
  • 三、变量类型
  • 四、变量名
  • 五、Tips
    • 变量声明的技巧
    • 变量的调用
  • 六、实际应用
    • 1.计算两个数的和
    • 2.计算一个数的平方
    • 3.线段树
  • 总结

成都创新互联是网站建设专家,致力于互联网品牌建设与网络营销,专业领域包括成都做网站、网站制作、电商网站制作开发、重庆小程序开发、微信营销、系统平台开发,与其他网站设计及系统开发公司不同,我们的整合解决方案结合了恒基网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,且不断评估并优化我们的方案,为客户提供全方位的互联网品牌整合方案!
前言

这篇博客详细介绍了 C++ 中的变量,看看有没有涨你的芝士呢~

转载请标明出处,别忘了动动你发财的小手点一个免费的赞,作者制作不易吖!


一、引入问题

我们先引入一个简单的问题:如果要你计算 x x x 和 y y y 的和,你会怎么计算?
你的步骤可能是这样的:

我们同样可以用程序实现这个,流程如下:

具体方法有很多,但是万变不离其宗的是,我们需要向计算机要小格子。这个小格子嘛,就是所谓的变量啦。


二、变量声明

变量的声明规则很简单,就是:

变量类型 变量名;

或者

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

当我们想同时声明多个变量的时候,可以用英文逗号","分隔,像这样:

变量类型 变量名1, 变量名2, 变量名3;

栗子:

int a = 3, b, c = 5;//a,b和c这三个变量都是int类型

错误的做法:

int a = 5, b = 7, long long c = 0; //编译器会报错滴

如果我们想要修改变量的值可以这样:

//比如,我们修改变量a的值 
long long a; 
a = 5;

//但其实你可以提前赋值
long long a = 5;

没错,就是变量名 = 值;的形式。


三、变量类型

变量类型有很多,而且声明变量要有变量类型。

Q:为什么要有变量类型呢?
A:举个栗子:你要存储整数的变量,我们声明的变量的变量类型就是int或者其他整数类型。但如果没有一个约定好的类型,计算机就不知道给你分配多少内存,你这个变量是存整数还是浮点数(也就是小数)还是其他。

不过这里我真的要吐槽一下,有很多编程语言都是不用声明变量类型的……(超级小声)

下面给大家整理了 C++ 中基本的变量类型及其信息:

变量类型存储范围所占内存备注
bool布尔型只能表示 t r u e true true ( 0 ) (0) (0) 和 f a l s e false false ( 1 ) (1) (1) 两种值 1 1 1 字节用于表示逻辑运算中的
short短整型 − 2 15 -2^{15} −215 ~ 2 15 − 1 2^{15}-1 215−1     ( − 32768 (-32768 (−32768 ~ 32767 ) 32767) 32767) 2 2 2 字节用于存储较小数值,不常用
int整型 − 2 31 -2^{31} −231 ~ 2 31 − 1 2^{31}-1 231−1     ( − 2147483648 (-2147483648 (−2147483648 ~ 2147483647 ) 2147483647) 2147483647) 4 4 4 字节超级常用的变量类型
long长整型不同场景下,long的大小不同,但一般认为long>=int玄学比较玄学,不推荐使用
long long超长整型 − 2 63 -2^{63} −263 ~ 2 63 − 1 2^{63}-1 263−1     ( − 9223372036854775808 (-9223372036854775808 (−9223372036854775808 ~ 9223372036854775807 ) 9223372036854775807) 9223372036854775807) 8 8 8 字节超强的变量类型
float单精度实型懒得写 4 4 4 字节可以保留小数点后 6 6 6 位
double双精度实型懒得写 8 8 8 字节可以保留小数点后 15 15 15 位
long double长精度实型懒得写 12 12 12 字节可以保留小数点后 18 18 18 位
char字符型 − 2 7 -2^{7} −27 ~ 2 7 − 1 2^{7}-1 27−1     ( − 128 (-128 (−128 ~ 127 ) 127) 127) 1 1 1 字节用于存储字符

值得一提的是,在部分变量类型前可以加上signedunsigned
signed表示有符号的,也就是数值有正负之分。signed通常是被默认了的,可以省去。栗子:int其实就是signed int
unsigned表示无符号的,也就是数值只能表示正数。unsigned通常不是默认的,需要自行视情况添加。

Tips:unsigned可以使存储正数的空间变为原来的两倍。栗子:如果你用了unsigned int,那么它的存储范围就是 0 0 0 ~ 2 32 − 1 2^{32}-1 232−1     ( 0 (0 (0 ~ 4294967295 ) 4294967295) 4294967295)。是不是很nice!


四、变量名

变量名的命名也是有规则的(总不能让你瞎取名字)

变量名的命名规则是:

  • 不能为C++关键字。
  • 只能由大小写字母、数字和下划线构成。
  • 开头不可为数字。

第一条很好解释,如果变量名与C++关键字重名编译器就会报错。因为这样,使用变量的时候编译器就不知道你用的是变量还是关键字。第二条和第三条就不用多说了吧(也没啥好多说的)

至于关键字,大家如果想具体了解的话可以去百度百科看一看。

值得注意的是,变量名是区分大小写的,这意味着sumSum并不是同一个变量名。

接下来看几个变量名是否合法:

变量名是否合法原因
int×因为int是C++关键字
_a因为_a符合变量命名规则
sum1因为sum1符合变量命名规则
114514×因为114514开头是数字
asdf因为asdf符合变量命名规则
return_因为return_符合变量命名规则
1x×因为1x开头是数字
_因为_符合变量命名规则(没想到吧)
a#×因为a#中有除大小写字母、数字和下划线以外的字符

五、Tips 变量声明的技巧

变量的名称要尽量命名得有意义一些,让人一眼就知道这个变量的作用最好,但不要过于冗长。
比如你要定义一个变量,用来计算多个数的和。那么为了方便自己和他人阅读代码,最好这样定义:

long long sum = 0;

或者

long long he = 0;

代码解释:sum就是求和的英文,方便人理解;he是“和”中文拼音,也方便人理解。

一般我们把大部分的变量命名在主函数外(像这样的变量叫做全局变量)。这样就算没有赋初始值,也会默认赋值为0。可是如果在主函数内,没有赋初始值的话就会导致默认值是一些奇奇怪怪的值。并且,事实上如果你想声明比较多的变量,在主函数内可能会内存不够。那这时,我们声明在外面肯定是更好的选择。

变量的调用

我们看一个代码片段:

long long a = b, b = 5;
cout<< b;

Q:猜猜会怎么样?
A:报错!!!

因为在变量b声明之前不能调用变量b。我们只需要稍作修改就行:

long long b = 5, a = b;
cout<< b;

Q:再猜猜会怎么样?
A:(报错!!!)输出5

因为这次我们在调用变量b之前,已经声明了变量b


六、实际应用 1.计算两个数的和
#includeusing namespace std;
int a, b;//定义两个变量一个叫a,一个叫b 
int main()
{cin >>a >>b;//输入两个变量的值 
	cout<< a + b;//输出两个变量的和 
	return 0; 
}
2.计算一个数的平方
#includeusing namespace std;
long long a;//定义一个变量
int main()
{cin >>a;//输入这个变量的值 
	cout<< a * a;//输出这个变量的平方 
	return 0; 
}
3.线段树

狗头保命

#includeusing namespace std;
#define lson(idx) (idx<< 1)
#define rson(idx) (idx<< 1 | 1)
#define MAXN 1000005

long long n, q, a[MAXN], s, ii, x, l, r;
struct node
{long long l, r, val, sum, tag;
} tree[MAXN<< 2];

void pushup(int idx)
{tree[idx].val = tree[lson(idx)].val + tree[rson(idx)].val;
}
void add(int idx, int val) 
{tree[idx].val += (tree[idx].r - tree[idx].l + 1) * val;
	tree[idx].tag += val;
}
void pushdown(int idx)
{if(tree[idx].tag)
	{add(lson(idx), tree[idx].tag);
		add(rson(idx), tree[idx].tag);
		tree[idx].tag = 0;
	}
}
void build(int idx, int l, int r)
{tree[idx].l = l, tree[idx].r = r;
	if(l == r)
	{tree[idx].val = a[l];
		return;
	}
	int mid = l + r >>1;
	build(lson(idx), l, mid), build(rson(idx), mid + 1, r);
	pushup(idx);
}
long long query(int idx, int l, int r)
{if(tree[idx].l >r || tree[idx].r< l)
		return 0;
	if(l<= tree[idx].l && tree[idx].r<= r)
		return tree[idx].val;
	pushdown(idx);
	long long res = 0;
	int mid = tree[idx].l + tree[idx].r >>1;
	if(l<= mid)
		res += query(lson(idx), l, r);
	if(r >= mid + 1)
		res += query(rson(idx), l, r);
	return res;
}
void update(int idx, int l, int r, long long val)
{if(l<= tree[idx].l && tree[idx].r<= r)
	{add(idx, val);
		return;
	}
	int mid = tree[idx].l + tree[idx].r >>1;
	pushdown(idx);
	if(l<= mid)
		update(lson(idx), l, r, val);
	if(r >= mid + 1)
		update(rson(idx), l, r, val);
	pushup(idx);
}
int main()
{scanf("%lld%lld", &n, &q);
	for(int i = 1; i<= n; i++)
		scanf("%lld", &a[i]);
	build(1, 1, n);
	while(q--)
	{scanf("%lld", &s);
		if(s == 1)
		{	scanf("%lld%lld%lld", &l, &r, &x);
			update(1, l, r, x);
		}
		else if(s == 2)
		{	scanf("%lld%lld", &l, &r);
			printf("%lld\n", query(1, l, r));
		}
	}
	return 0;
}

总结

本篇博客主要讲了C++的变量、变量声明、变量类型与变量名。
事实上关于变量还有很多芝士是我这篇博客没有讲完的,以后慢慢更新吧~

大家如果还有什么问题可以在评论区留言哦~


你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章名称:[C++]变量-创新互联
本文链接:http://cdkjz.cn/article/iihjp.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220