首頁 > 軟體

淺談C語言的變數和常數

2022-02-14 19:01:23

生活中的有些值是不變的(比如:圓周率,性別,身份證號碼,血型等等)

有些值是可變的(比如:年齡,體重,薪資)。

不變的值C語言中用常數的概念來表示,變的值C語言中用變數來表示

//定義變數的方法:
//型別 + 名字
int age = 150;
float weight = 45.5f;
char ch = 'w'

變數的分類

1.全域性變數

2.區域性變數(補充:只要放在{ }裡的都是區域性變數)

例如:

int  a = 10;//全域性變數 —— 定義在大括號外部
int  b = 20;//全域性變數
int main()
{
	int a = 100;
	printf("a = %dn", a);//區域性變數 —— 定義在大括號內部
	printf("b = %dn", b);//區域性變數
	return 0;
}

以上程式碼的輸出結果為:

a = 100
b = 20

那麼為什麼不會是a = 10 b = 20 呢?

這是因為全域性變數與區域性變數名字衝突的情況下,區域性優先!但在xdm寫程式碼的時候不建議將區域性變數與全域性變數命名成一樣的

在程式碼中這兩個變數該怎麼使用呢?下面我來舉個栗子

int main()
{
	int num1 = 0;//建立變數num1
	int num2 = 0;
	int sum = 0;
	//輸入變數值
	scanf("%d %d",&num1,&num2);//&取地址操作符
	//相加
	sum = num1 + num2;
	//列印輸出
	printf("sum = %dn",sum);
	return 0;
}

變數的作用域和生命週期

作用域

作用域(scope)是程式設計概念,通常來說,一段程式程式碼中所用到的名字並不總是有效/可用的而限定這個名字的可用性的程式碼範圍就是這個名字的作用域。

簡單來講:一個變數哪裡可以使用,哪裡就是他的作用域

1. 區域性變數的作用域是變數所在的區域性範圍,例如:

int main()
{
	{
		int a = 0;
			printf("%dn", a);
	}
	printf("%dn", a);
	return 0;
}

a的作用域就是上圖框選部分

2. 全域性變數的作用域是整個工程(跨檔案也可以使用),例如:

int a = 0; 
void test()
{
	printf("test::%dn", a);
}
int main()
{
	test();
	printf("main::%dn", a);
	return 0;
}

生命週期

變數的生命週期指的是變數的建立到變數的銷燬之間的一個時間段

1. 區域性變數的生命週期是:進入作用域生命週期開始,出作用域生命週期結束。

2. 全域性變數的生命週期是:整個程式的生命週期。

常數

C語言中的常數分為以下以下幾種:

字面常數(直接寫出來的字面值)
例如:
(1). 3.14——浮點型常數
(2). 20——整形常數
(3). ‘a’——字元常數
(4). “abcd”——字串常數

2.const 修飾常變數
const是C語言裡的一個關鍵字

作用:具有常屬性的意思,不能改變變數的值

例如:

int main()
{
	int num = 10;
	printf("%dn", num);
	num = 20;//修改
	printf("%dn", num);
		return 0;
}

在這裡的輸出結果為10和20,而下面

int main()
{
	const int num = 10;
	printf("%dn", num);
		return 0;
}

如果這樣寫則num的值不可改變

const 修飾的常變數

3.#define 定義的識別符號常數

#define定義的東西為常數

#define M 100
int main()
{
	int a = M;
	printf("%dn", a);
	return 0;
}
//輸出結果為100

4.列舉常數
列舉——一一列舉,例如:性別,三原色等

列舉關鍵字:enum

enum Colour
{
	RED,//0
	GREEN,//1
	BLUE//2
};
int main()
{
	enum Colour s = RED;
	printf("%d %d %dn", RED, GREEN, BLUE);
	return 0;
}
//輸出結果0 1 2
//列舉常數預設從0開始,依次向下遞增1

總結

本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注it145.com的更多內容!    


IT145.com E-mail:sddin#qq.com