[C++]變量-創(chuàng)新互聯(lián)

目錄
  • 前言
  • 一、引入問題
  • 二、變量聲明
  • 三、變量類型
  • 四、變量名
  • 五、Tips
    • 變量聲明的技巧
    • 變量的調(diào)用
  • 六、實(shí)際應(yīng)用
    • 1.計(jì)算兩個數(shù)的和
    • 2.計(jì)算一個數(shù)的平方
    • 3.線段樹
  • 總結(jié)

成都創(chuàng)新互聯(lián)是網(wǎng)站建設(shè)專家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,專業(yè)領(lǐng)域包括成都做網(wǎng)站、網(wǎng)站制作、電商網(wǎng)站制作開發(fā)、重慶小程序開發(fā)、微信營銷、系統(tǒng)平臺開發(fā),與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!
前言

這篇博客詳細(xì)介紹了 C++ 中的變量,看看有沒有漲你的芝士呢~

轉(zhuǎn)載請標(biāo)明出處,別忘了動動你發(fā)財?shù)男∈贮c(diǎn)一個免費(fèi)的贊,作者制作不易吖!


一、引入問題

我們先引入一個簡單的問題:如果要你計(jì)算 x x x 和 y y y 的和,你會怎么計(jì)算?
你的步驟可能是這樣的:

我們同樣可以用程序?qū)崿F(xiàn)這個,流程如下:

具體方法有很多,但是萬變不離其宗的是,我們需要向計(jì)算機(jī)要小格子。這個小格子嘛,就是所謂的變量啦。


二、變量聲明

變量的聲明規(guī)則很簡單,就是:

變量類型 變量名;

或者

變量類型 變量名 = 初始值;

當(dāng)我們想同時聲明多個變量的時候,可以用英文逗號","分隔,像這樣:

變量類型 變量名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;

//但其實(shí)你可以提前賦值
long long a = 5;

沒錯,就是變量名 = 值;的形式。


三、變量類型

變量類型有很多,而且聲明變量要有變量類型。

Q:為什么要有變量類型呢?
A:舉個栗子:你要存儲整數(shù)的變量,我們聲明的變量的變量類型就是int或者其他整數(shù)類型。但如果沒有一個約定好的類型,計(jì)算機(jī)就不知道給你分配多少內(nèi)存,你這個變量是存整數(shù)還是浮點(diǎn)數(shù)(也就是小數(shù))還是其他。

不過這里我真的要吐槽一下,有很多編程語言都是不用聲明變量類型的……(超級小聲)

下面給大家整理了 C++ 中基本的變量類型及其信息:

變量類型存儲范圍所占內(nèi)存備注
bool布爾型只能表示 t r u e true true ( 0 ) (0) (0) 和 f a l s e false false ( 1 ) (1) (1) 兩種值 1 1 1 字節(jié)用于表示邏輯運(yùn)算中的
short短整型 ? 2 15 -2^{15} ?215 ~ 2 15 ? 1 2^{15}-1 215?1???? ( ? 32768 (-32768 (?32768 ~ 32767 ) 32767) 32767) 2 2 2 字節(jié)用于存儲較小數(shù)值,不常用
int整型 ? 2 31 -2^{31} ?231 ~ 2 31 ? 1 2^{31}-1 231?1???? ( ? 2147483648 (-2147483648 (?2147483648 ~ 2147483647 ) 2147483647) 2147483647) 4 4 4 字節(jié)超級常用的變量類型
long長整型不同場景下,long的大小不同,但一般認(rèn)為long>=int玄學(xué)比較玄學(xué),不推薦使用
long long超長整型 ? 2 63 -2^{63} ?263 ~ 2 63 ? 1 2^{63}-1 263?1???? ( ? 9223372036854775808 (-9223372036854775808 (?9223372036854775808 ~ 9223372036854775807 ) 9223372036854775807) 9223372036854775807) 8 8 8 字節(jié)超強(qiáng)的變量類型
float單精度實(shí)型懶得寫 4 4 4 字節(jié)可以保留小數(shù)點(diǎn)后 6 6 6 位
double雙精度實(shí)型懶得寫 8 8 8 字節(jié)可以保留小數(shù)點(diǎn)后 15 15 15 位
long double長精度實(shí)型懶得寫 12 12 12 字節(jié)可以保留小數(shù)點(diǎn)后 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 字節(jié)用于存儲字符

值得一提的是,在部分變量類型前可以加上signedunsigned。
signed表示有符號的,也就是數(shù)值有正負(fù)之分。signed通常是被默認(rèn)了的,可以省去。栗子:int其實(shí)就是signed int。
unsigned表示無符號的,也就是數(shù)值只能表示正數(shù)。unsigned通常不是默認(rèn)的,需要自行視情況添加。

Tips:unsigned可以使存儲正數(shù)的空間變?yōu)樵瓉淼膬杀?。栗子:如果你用?code>unsigned int,那么它的存儲范圍就是 0 0 0 ~ 2 32 ? 1 2^{32}-1 232?1???? ( 0 (0 (0 ~ 4294967295 ) 4294967295) 4294967295)。是不是很nice!


四、變量名

變量名的命名也是有規(guī)則的(總不能讓你瞎取名字)。

變量名的命名規(guī)則是:

  • 不能為C++關(guān)鍵字。
  • 只能由大小寫字母、數(shù)字和下劃線構(gòu)成。
  • 開頭不可為數(shù)字。

第一條很好解釋,如果變量名與C++關(guān)鍵字重名編譯器就會報錯。因?yàn)檫@樣,使用變量的時候編譯器就不知道你用的是變量還是關(guān)鍵字。第二條和第三條就不用多說了吧(也沒啥好多說的)

至于關(guān)鍵字,大家如果想具體了解的話可以去百度百科看一看。

值得注意的是,變量名是區(qū)分大小寫的,這意味著sumSum并不是同一個變量名。

接下來看幾個變量名是否合法:

變量名是否合法原因
int×因?yàn)?code>int是C++關(guān)鍵字
_a因?yàn)?code>_a符合變量命名規(guī)則
sum1因?yàn)?code>sum1符合變量命名規(guī)則
114514×因?yàn)?code>114514開頭是數(shù)字
asdf因?yàn)?code>asdf符合變量命名規(guī)則
return_因?yàn)?code>return_符合變量命名規(guī)則
1x×因?yàn)?code>1x開頭是數(shù)字
_因?yàn)?code>_符合變量命名規(guī)則(沒想到吧)
a#×因?yàn)?code>a#中有除大小寫字母、數(shù)字和下劃線以外的字符

五、Tips 變量聲明的技巧

變量的名稱要盡量命名得有意義一些,讓人一眼就知道這個變量的作用最好,但不要過于冗長。
比如你要定義一個變量,用來計(jì)算多個數(shù)的和。那么為了方便自己和他人閱讀代碼,最好這樣定義:

long long sum = 0;

或者

long long he = 0;

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

一般我們把大部分的變量命名在主函數(shù)外(像這樣的變量叫做全局變量)。這樣就算沒有賦初始值,也會默認(rèn)賦值為0。可是如果在主函數(shù)內(nèi),沒有賦初始值的話就會導(dǎo)致默認(rèn)值是一些奇奇怪怪的值。并且,事實(shí)上如果你想聲明比較多的變量,在主函數(shù)內(nèi)可能會內(nèi)存不夠。那這時,我們聲明在外面肯定是更好的選擇。

變量的調(diào)用

我們看一個代碼片段:

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

Q:猜猜會怎么樣?
A:報錯?。。?/p>

因?yàn)樵谧兞?code>b聲明之前不能調(diào)用變量b。我們只需要稍作修改就行:

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

Q:再猜猜會怎么樣?
A:(報錯?。。。?/s>輸出5。

因?yàn)檫@次我們在調(diào)用變量b之前,已經(jīng)聲明了變量b。


六、實(shí)際應(yīng)用 1.計(jì)算兩個數(shù)的和
#includeusing namespace std;
int a, b;//定義兩個變量一個叫a,一個叫b 
int main()
{cin >>a >>b;//輸入兩個變量的值 
	cout<< a + b;//輸出兩個變量的和 
	return 0; 
}
2.計(jì)算一個數(shù)的平方
#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;
}

總結(jié)

本篇博客主要講了C++的變量、變量聲明、變量類型與變量名。
事實(shí)上關(guān)于變量還有很多芝士是我這篇博客沒有講完的,以后慢慢更新吧~

大家如果還有什么問題可以在評論區(qū)留言哦~


你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

文章題目:[C++]變量-創(chuàng)新互聯(lián)
URL鏈接:http://bm7419.com/article28/iihjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、商城網(wǎng)站網(wǎng)站改版、動態(tài)網(wǎng)站、靜態(tài)網(wǎng)站品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)