本文目錄一覽:
c與c++語言編譯器是如何識別關鍵字
根據編譯器的不同,有不同的識別方式,例如VC6.0使用系統內建關鍵字列表,如果用戶定義變數的時候使用了系統默認的關鍵字,則會在編譯的時候產生錯誤。
附上:
C語言的關鍵字共有32個,根據關鍵字的作用,可分其為數據類型關鍵字、控制語句關鍵字、存儲類型關鍵字和其它關鍵字四類。
1 數據類型關鍵字(12個):
(1) char :聲明字元型變數或函數
(2) double :聲明雙精度變數或函數
(3) enum :聲明枚舉類型
(4) float:聲明浮點型變數或函數
(5) int: 聲明整型變數或函數
(6) long :聲明長整型變數或函數
(7) short :聲明短整型變數或函數
(8) signed:聲明有符號類型變數或函數
(9) struct:聲明結構體變數或函數
(10) union:聲明聯合數據類型
(11) unsigned:聲明無符號類型變數或函數
(12) void :聲明函數無返回值或無參數,聲明無類型指針(基本上就這三個作用)
(2)控制語句關鍵字(12個):
A循環語句
(1) for:一種循環語句(可意會不可言傳)
(2) do :循環語句的循環體
(3) while :循環語句的循環條件
(4) break:跳出當前循環
(5) continue:結束當前循環,開始下一輪循環
B條件語句
(1)if: 條件語句
(2)else :條件語句否定分支(與 if 連用)
(3)goto:無條件跳轉語句
C開關語句
(1)switch :用於開關語句
(2)case:開關語句分支
(3)default:開關語句中的「其他」分支
D
return :子程序返回語句(可以帶參數,也看不帶參數)
3 存儲類型關鍵字(4個)
(1)auto :聲明自動變數 一般不使用
(2)extern:聲明變數是在其他文件正聲明(也可以看做是引用變數)
(3)register:聲明積存器變數
(4)static :聲明靜態變數
4 其它關鍵字(4個):
(1)const :聲明只讀變數
(2)sizeof:計算數據類型長度
(3)typedef:用以給數據類型取別名(當然還有其他作用
(4)volatile:說明變數在程序執行中可被隱含地改變
c語言定義函數它只識別數字嗎
C源程序是由函數組成的。最簡單的程序有一個主函數 main(),但實用程序往往由多個函數組成,由 主函數調用其他函數,其他函數也可以互相調用。函數是C源程序的基本模塊,程序的許多功能是通過對 函數模塊的調用來實現的,學會編寫和調用函數可以提高編程效率。
函數的定義通常包含以下內容:
返回值類型 函數名(形參表說明) /*函數首部*/
{
說明語句 /*函數體*/ 報考指南
執行語句
}
對上面的定義形式進行以下說明:
(1)「返回值類型」是指函數返回值的類型。函數返回值不能是數組,也不能是函數,除此之外任何合法的數據類型都可以是函數的類型,如:int,long,float,char 等。函數類型可以省略,當不指明函數類型時,系統默認的是整型。
(2)函數名是用戶自定義的標識符,在 C 語言函數定義中不可省略,須符合 C 語言對標識符的規範, 用於標識函數,並用該標識符調用函數。另外函數名本身也有值,它代表了該函數的入口地址,使用指針 調用函數時,將用到此功能。
(3)形參又稱為「形式參數」。形參表是用逗號分隔的一組變數說明,包括形參的類型和形參的標識 符,其作用是指出每一個形參的類型和形參的名稱,當調用函數時,接收來自主調函數的數據,確定各參 數的值。
(4)用{ }括起來的部分是函數的主體,稱為函數體。函數體是一段程序,確定該函數應完成的規定的 運算,應執行的規定的動作,集中體現了函數的功能。函數內部應有自己的說明語句和執行語句,但函數 內定義的變數不可以與形參同名。花括弧{ }是不可以省略的。
根據函數定義的一般形式,可以定義一個最簡單的函數:
這是 C 語言中一個合法的函數,函數名為 add。它的函數返回值為int,沒有形參表,同時函數體內只有一條因為返回值為int而必須有的返回值語句。實際上函數 add 不執行任何操作和運算,它是一個空函數,在一般情況下是沒有用途的,但 在程序開發的過程中有時是需要的,常用來代替尚未開發完畢的函數。
計算機如何識別整型和浮點型
1樓的在胡扯。32位的就是浮點型么??。32位系統中,整型就是32位的,浮點型是64位的。
事實上,計算機根本無法識別是什麼類型。在彙編層,數據本來也無「類型」可言,關鍵看程序怎麼去處理數據。如果程序設計者把這段32位的內存塊當作一個整型,那麼它就是整型,如果當作一個串(比如4個元素的單位元組的數組),那麼它就是一個串。。
----------------------------------
就是說。計算機看待內存本來是沒有數據類型的,他只知道,內存是一位元組一位元組的….數據類型是人為的劃分,是程序員定義的。
比如: int a;
char b[4];
wchar c[2];
上面的代碼,在32位系統中,他們都是定義一塊內存,大小都是4個位元組,對於計算機來說,他們事實上沒有任何區別,但是對於程序員來說,他們的區別很大。
當訪問時:
a = 0;
b[0] = ‘a’, b[1] = ‘b’, b[2] = ‘c’, b[3] = 0;
c[0] = L’a’, c[1] = L’b’;
在C語言中,他們是有區別的,如上。
但是在彙編層他們都會被翻譯成如下形勢的代碼:
MOV [ DDD + XXX ], YYY
如果代碼在某函數中,DDD是堆棧指針,XXX是便宜,YYY是操作數。
----------------------------
你可以做一下這樣的測試(把一個整型值當作一個字元串來列印)
int a = 0;
a = ( (int)’a’ 24 ) + ( (int)’b’ 16 ) + ( (int)’c’ 8 );
printf(( char * ) a );
原創文章,作者:PPYM,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/139414.html