1. 程式人生 > >常量、變數和常變數

常量、變數和常變數

在高階語言中,如何來表示資料的型別呢?

答案有兩種,一種是常量,一種是變數。

常量

常量就是在程式執行過程中其值不能改變的量,我們任意說一個數字、一個單詞都是一個常量,例如3就是常量、apple也是常量,常量就相當於數學上常數的概念,只不過計算機的資料型別並不是只有數字,所以稱之為常量。根據資料型別的不同又可分為數值常量、字元常量、字串常量和符號常量。

數值常量可分為整型常量和實型常量。

像1、2、3、100、1000這些是整形常量。1.23、3.14、0.345、5.0這些是實型常量。

字元常量可分為普通字元和轉義字元。

例如'a'、'0'、'!'這些都屬於普通字元常量。

轉義字元是以\開頭的一些特殊字元,它們要麼代表\後面的那個符號要麼行使某一個特殊功能。

c語言的轉義字元有:


注:字元常量用單引號' '包起來。例如:'a'、'#'、'\n'。

字串常量是指一串字元,例如"abc"、"china"、"2012"、"[email protected]"等都是字串常量。字串常量用雙引號" "包起來。
符號常量是使用一個符號來表示一個常量,需要使用#define指令。

例如:#define PI 3.14,這樣就定義了一個符號常量PI,它表示3.14,且不能更改,下文一旦出現PI就表示3.14。

示例1:

#include <stdio.h>

int main()
{
	#define PI 3.14 //定義一個符號常量,其值為3.14
	//PI = 6.28; 符號常量不能重新賦值,這句是錯誤的
	double d = PI * 2; //將PI的兩倍賦值給變數d
	printf("%f\n",PI); //輸出d的值,%f是浮點型數字的輸出格式
	return 0;
}

有兩點需要注意:

1、一旦制定了字元常量PI為3.14其值就確定了。例如示例1的"PI = 6.28;"是不對的。

2、對符號常量賦值不需要等號,語句最後也不需要分號,否則報錯。


變數

變數顧名思義就是在程式執行過程中其值可以改變的量,變數有變數型別、變數名和變數值三個屬性。變數名就是該變數的資料型別,變數名代表儲存該資料的那一塊空間。變數值就是該儲存空間中存放的值。我們通過示例2來做詳細的說明。

示例2:

#include <stdio.h>

int main()
{
	int a; //定義一個int型別的變數,變數名為a,未賦值。
	int b = 6; //定義一個int型別的變數b,並賦值為6
	int c = b * 2; //定義一個int型別的變數c,並將b的兩倍賦值給c
	a = 5; //為變數a賦值為5
	printf("a、b、c的值分別為%d、%d、%d\n",a,b,c); //輸出abc的值
	return 0;
}
程式碼解釋:

這個程式定義了三個int型別的變數a、b、c。int就是這三個變數的變數型別,它們的變數名就是a、b、c。變數名的作用是代表儲存該資料對應的空間。我們知道int型別佔四個位元組,那麼變數名a實際上就代表了用於儲存資料的那四個位元組的空間。存放的內容就是變數的值。a = 5;這個語句就是將5這個資料放在了a這個空間裡。所以變數a的值就是5。

定義變數有三種方式

1、定義和賦值分開寫,就示例2的int a;a=5;

2、定義時同時賦值,如示例2的int b = 6;

3、同時定義多個,例如int a,b,c;當然也可以同時定義並賦值多個。如int a = 5,b = 6,c = b * 2;

示例3:

#include <stdio.h>

int main()
{
	int a = 5,b = 6,c = b * 2; //同時定義三個int型別的變數並賦值
	printf("a、b、c的值分別為%d、%d、%d\n",a,b,c); //輸出abc的值
	return 0;
}

關於變數有2個重要的問題

1:變數必須先賦值後使用。例如示例4中把示例2的a = 5;註釋掉

示例4:

#include <stdio.h>

int main()
{
	int a; 
	int b = 6; 
	int c = b * 2; 
	//a = 5; //未對a賦值
	printf("a、b、c的值分別為%d、%d、%d\n",a,b,c); 
	return 0;
}
執行結果:


程式分析:

因為a還沒有賦值就在輸出語句中使用它,結果a的值變得莫名其妙。

2、變數的定義一定要放在程式的最前面。否則程式報錯。例如示例5,把示例2的a = 5;放在定義變數b、c的前面。

示例5:

#include <stdio.h>

int main()
{
	int a; 
	a = 5; //把對a的賦值語句放在定義b、c的上面
	int b = 6; 
	int c = b * 2; 
	printf("a、b、c的值分別為%d、%d、%d\n",a,b,c);
	return 0;
}

常變數
常變數是常量和變數的結合體,和符號常量類似,值都不能改變,但又具備了變數的變數型別、變數名和變數值的屬性。簡單的說常變數就是其值不能改變的變數。

例如:

#include <stdio.h>

int main()
{
	#define PI 3.14 //定義符號常量PI,值為3.14
	const double pi = 3.14; //定義一個實型常變數,名為pi,值為3.14
	double d1 = PI * 2; //定義實型變數,名字為d1,其值為PI的兩倍。
	double d2 = pi * 2; //定義實型變數,名字為d2,其值為pi的兩倍。
	printf("d1 = %lf\n",d1); //輸出d1的值
	printf("d2 = %lf\n",d2); //輸出d2的值
	return 0;
}

程式分析:

程式執行結果表示d1和d2的值是一樣的,那麼符號常量和常變數有什麼區別呢?區別是符號常量不分配記憶體空間,#define PI 3.14的作用是把用PI來代表3.14,而常變數是在記憶體劃了一個空間,往裡面放了一個變數。const double pi = 3.14的作用是在記憶體中劃出了一個8位元組大的空間,這個空間在程式執行過程中被命名為pi,裡面存放著一個數據3.14。

變數、常量和常變數並不是能隨意的取名的,它必須遵守變數命名規則。否則程式報錯。另外在命名的基礎上,還要遵守命名規範。不遵守命名規範程式不會報錯,但是建議遵守,因為這是行業內的預設規則。

命名規則

1.只包含字母、數字、下劃線"_"或"@"
2.不能以數字開頭和"@"開頭
3.不能使用c語言本身已經定義的關鍵字。
 
命名規範
變數名要遵守駝峰式命名法,規則是:單個單詞使用小寫字母,多個單詞第一個單詞首字母小寫,其餘單詞首字母大寫。示例:student、studentName。

常量和常變數的識別符號全體大寫 多單詞加下劃線 示例:PI、APPLE_PRICE。

注:變數名、常量名、常變數名也被稱為識別符號。

相關推薦

常量變數變數

在高階語言中,如何來表示資料的型別呢? 答案有兩種,一種是常量,一種是變數。 常量 常量就是在程式執行過程中其值不能改變的量,我們任意說一個數字、一個單詞都是一個常量,例如3就是常量、apple也是常量,常量就相當於數學上常數的概念,只不過計算機的資料型別並不是只有數字,所

CC++中經const修飾的常量變數普通變數的區別

1.在C89標準下的const const 修飾的型別是一個常變數,不能作為陣列的下標。常變數不能作為左值。 如: const int a = 10; int b = a; //其編譯的過程和一般變數編譯的過程相同 //並不會把引用符號的地方替換為對應的資

JS中最經典的全域性變數區域性變數問題(1作用域作用域鏈 2變數宣告提前)

var a = 10; function test(){ a = 100; console.log(a); console.log(this.a); var a; console.log(a); } test(); 1、程式的執行結果為:100

萌新Java的學習筆六:變數與成員變數區域性變數常量命名規範-12

Java是一門強型別語言,每個變數都必須宣告其型別。之後才能分配相應長度的儲存單元給它。格式為: type varName [=value][varname[=value]] //type varName屬於宣告,方括號意思為了可以有也可以沒有,也就是說宣告可以

Java學習筆記02--成員變數區域性變數建構函式構造程式碼塊this關鍵字static關鍵字靜態函式

成員變數和區域性變數 自定義的位置區別: 成員變數是定義在方法之外,類之內的變數。 區域性變數是宣告在方法之內的變數。 作用上的區別: 成員變數的作用描述一類事物的屬性。 區域性變數的作用是提供一個變數給方法內部使用的。 生命週期的區別;

linux shell “永久環境變數“臨時環境變數"普通變數"之完全解讀

        這個年代, 大家寫點書, 也無非就是為了搞點錢, 基本都是羅列一些知識點, 基本都是寫給已經會了的人看的。 真正用心寫書的人, 不多。 如果真正用心寫書, 且站在讀者的角度去寫, 那就少之又少了。         關於linux shell環境變數, 我看

理論分佈抽樣分佈------(一)事件概率隨機變數(離散連續)

抽樣分佈:從間斷性變數總體的理論分佈(二項分佈和泊松分佈)和連續性變數總體的理論分佈中抽出的樣本統計數的分佈,即抽樣分佈。 一、事件和事件發生的概率 事件:在自然界中一種事物,常存在幾種可能出現的情況,每一種可能出現的情況稱為事件 事件的概率:每一件事出現的可能性,稱為

8_物件建立static 關鍵字靜態變數成員變數的區別文件

一、物件建立   Student s = new Student(); 步驟: (1)載入 Student.class 檔案進記憶體; (2)在棧記憶體中為 s 開闢空間; (3)在堆記憶體為學生物件開闢空間; (4)對學生物件的成員變數進行預設初始化; (5)對學生物件的成員變數進行顯示初始化

python基礎之四種函式型別函式的巢狀呼叫函式的區域性變數全域性變數

函式根據有沒有引數,有沒有返回值,可以相互組合,一共有4種 * 無引數,無返回值 * 無引數,有返回值 * 有引數,無返回值 * 有引數,有返回值 <1>無引數,無返回值的函式此類函式,不能接收引數,也沒有返回值,一般情況下,列印提示燈類似的功能,使用這類的函式 def pr

C++ 類中特殊的成員變數變數引用靜態)的初始化方法

有些成員變數的資料型別比較特別,它們的初始化方式也和普通資料型別的成員變數有所不同。這些特殊的型別的成員變數包括: a.引用 b.常量 c.靜態 d.靜態常量(整型) e.靜態常量(非整型)     常量和引用,必須通過引數列表進行初始化。     靜態成員變

Dll 模組間(dll, exe)使用匯出變數靜態變數外部變數的試驗與結論

DLL檔案(Dynamic Linkable Library 即動態連結庫檔案),是一種不能單獨執行的檔案,它允許程式共享執行特殊任務所必需的程式碼和其他資源 比較大的應用程式都由很多模組組成,這些模組分別完成相對獨立的功能,它們彼此協作來完成整個軟體系統的工作。可能存在一些模組的功能較為通用,在構造其它軟

python基礎:函式名稱空間作用域全域性變數區域性變數

一、名稱空間: Python的名稱空間的本質是一個字典,用來記錄變數名稱和值。字典的key是變數的名稱,字典的value對於的是變數的值。 例如 {‘name’:’zs’,’age’:10} 名稱空間一共分為三種:區域性名稱空間、全域性名稱空間、內建名稱空間 區域性名稱空間: 每個函式都有自

Java三大變數分別是類變數例項變數區域性變數

一、什麼是變數:就是內容可以改變的量,它與常量相對應。而這三大變數實際上是從變數的作用域來定義和劃分的。 1、類變數,是歸屬類的變數,它是通過在定義類的屬性的時,增加static修飾符,所以又稱為靜態變數。類變數不僅可以直接通過類名+點操作符+變數名來操作,也

Linux環境變數使用者變數shell變數的區別與聯絡

1.shell簡介 shell是指為使用者提供操作介面的軟體,不同作業系統有著不同的shell,同一個作業系統也有著不同的shell。shell分為兩大類:圖形介面shell和命令列式shell。 圖形介面shell:windows作業系統下常用的windows Expl

Android Studio SDK 下載安裝環境變數配置

win10下Android Studio和SDK下載、安裝和環境變數配置              ------made by siwuxie095 1、首先必須安裝Java  JDK   (Java JDK下載、安裝和環境變數配置,傳送陣:點選開始傳送)

例項變數變數類方法例項方法

類體中包括成員變數和區域性變數,而成員變數又可以細分為例項變數和類變數,在宣告成員變數的時候,用static給予修飾的稱作類變數,否則稱作例項變數。(類變數也稱為static變數,靜態變數) 那麼,類變數和例項變數有什麼區別呢? 我們知道,一個類通過使用ne

常量物件常量成員函式引用

本章內容均為coursera中C++程式設計課件的整理 常量物件 如果不希望某個物件的值被改變,則定義該物件的時候可以在前面加const關鍵字。 class Demo{ private : int

通過Java反射機制獲取物件方法成員變數

先定義一個JavaBean package com.jim.test.Test; public class User { private int id; private String name = "abc"; private Str

Java學習:“this”的引用及類變數例項變數區域性變數

class caculate { static int staticVar = 0; //類變數、靜態變數 static final float STATIC_CONSTANT = 1; /

Solidity語言學習筆記————7單位全域性變數

貨幣單位(Ether Units)wei,finney,szabo或ether可以在Solidity中作為貨幣單位並可以進行相互轉換。沒有單位的數字預設是Wei。單位之間的轉化規則如下:1 ether == 10^3 finney1 ether == 10^6 szabo1