c语言变量加常量,C语言(二)---常量与变量(示例代码)
一、進制
1.1 二進制
1.1 簡介
二進制數據是用0和1兩個數碼來表示的數。它的基數是2,進位規則是“逢二進1”,借位規則是“借一當二”。當前的計算機系統使用的基本上是二進制系統。
1.2 二進制數據表示法
二進制沒有2只有0和1,逢2進1,其權的大小順序為22、21、2o。例如:
二進制數據0001代表十進制的1,二進制數據0010代表十進制的2,
二進制數據0011代表十進制的3,二進制數據0100代表十進制的4,
二進制數據0101代表十進制的5,二進制數據0110代表十進制的6,
二進制數據1000代表十進制的8,二進制數據1001代表十進制的9,
二進制數據1010代表十進制的10,二進制數據1011代表十進制的11,
二進制數據1101代表十進制的13,二進制數據1111代表十進制的15。
1.3 二進制數據的特點
在一個二進制數字的尾部每次多加一個0代表這個數字乘以2,就如同十進制的尾部每次多加一個0代表乘以10。例如:
二進制數據0001代表十進制的1,二進制數據0010代表十進制的2,
二進制數據0100代表十進制的4,二進制數據1000代表十進制的8,
2的常見倍數:1 2 4 8 16 32 64 128 256 512 1024 2048 4096
1.2 十六進制
英文名稱:hexadecimal ,是計算機中數據的一種表示方法。同我們日常中的十進制表示法不一樣。它由0-9,A-F組成,字母不區分大小寫。
與10進制的對應關系是:0-9對應0-9;A-F對應10-15;N進制的數可以用0---(N-1)的數表示超過9的用字母A-F。二進制只有0和1沒有2,十進制只有0-9的數字沒有10,十六進制只有0-F,也就是0到15的數字沒有16。
在一個十六進制數字的尾部每次多加一個0代表這個數字乘以16,就如同十進制的尾部每次多加一個0代表乘以10。例如:
十進制的32表示成十六進制就是:20
十六進制的20代表十進制的:2×161+0×16o=32
十六進制的A5代表十進制的:10×161+5=165
十六進制的100代表十進制的:16×16=256
十六進制的23F代表十進制的:2×16×16+3×16+15=575
1.3 進制的轉換
10進制轉2進制:讓個位對2取余數得出是1還是0,對其他位除以對應的2的倍數
二、常量
C語言的常量包括:整數常量、浮點數常量、字符常量和字符串常量。
2.1 整數常量的表示方法
十進制表達式,和普通數字的表達方法一致。例如:13,28,-52,-1000等等
十六進制表達式,以0x開頭。例如:0xA1,0xC8,-0x20,-0x500等等
八進制表達式,以0開頭。例如:032,-011
注意:0開頭的常量看上去好像是十進制,其實不是了,已經是八進制了,八進制中只有0-7之間的數字,8和9都錯誤代碼。
注意:C語言并沒有提供二進制常量表達式。
2.2 浮點數常量
浮點數常量,通俗地說就是帶小數點的數字,表達式的中必須含有小數點,即使小數部分是0也要缺省帶小數點。
主要有兩種表達式:
單精度浮點數:尾部帶f的浮點數代表是單精度浮點數。例如:0.5f,88.2f,-55.0f等等。
雙精度浮點數:尾部不帶f的浮點數代表是雙精度浮點數。例如:0.88,99.5,-111.356等等。
一般認為雙精度浮點數比單精度浮點數表達的范圍要大很多,包括整數部分和小數部分,雙精度表達的數字長度要大很多。
2.3 字符常量
字符常量是用單引號將一個字符括起來的構成,每種被括起來不同的字符代表一個不同的數字(就如同每個學生有不同的名字,而且還有個不同的學號一樣)。
所有字符與數值的對照表就是ASCII編碼表,作為字符常量使用的ASCII編碼主要是使用0-127范圍內的數字。其中0~31及127(共33個)是控制字符或通信專用字符,其余為可顯示字符。
例如:char c = ‘A’;
‘A’代表的是一個數字65,因為在ASCII編碼表中A的數值是65,依此類推:
‘ B’代表66,‘a’代表97,
‘X’代表88,‘5’代表53,
‘=’代表61,‘|’代表124,
’ ’空格代表32等等。
因此,字符常量實際上也是一種整數常量,只不過字符常量所表達的范圍比較小而已。
所有的ASCII碼都可以用“\”加數字(2位的16進制數字或3位的8進制數字)來表示。
在C語言中常用些字母前加“\”,來表示常見的那些不能顯示的ASCII字符,這樣的字符就叫做轉義字符。例如:char c = ‘\n’;其中‘\n’代表10,被打印輸出時代表換行“new line”。依此類推:‘t’代表9,被打印輸出時代表間隔一個TAB距離“Table”。
‘\0’代表0,打印輸出時代表字符串結尾。
‘\\’代表92,打印輸出時是一條反斜杠。
注意在C語言中要打印一條反斜杠,在字符常量中必須使用‘\\’來表示。
‘\”’代表34,打印輸出時代表是一個雙引號。
char c=‘\x25’; 代表37打印輸出的是% ,Char c=‘\053’; 代表43打印輸出的是+。
2.4 字符串常量
字符串常量是一對雙引號括起來的字符集合。
例如,下面的是合法的字符串常量:"how do you do.","CHINA","a","$123.45",
存儲:字符串中的字符依次存儲在內存中一塊連續的區域內,并且把空字符‘ \0’自動附加到字符串的尾部作為字符串的結束標志。故字符個數為n的字符串在內存中應占(n+1)個字節。
使用printf可以輸出字符串,例如:printf("how do you do.");
與字符常量的比較:
字符常量是由一對單引號括起來的單個字符;而字符串常量是一對雙引號括起來的字符集合。
字符常量本質上是一個數字,這個數字對應了一個字符;而字符串常量本質上是一個字符集合的內存地址,打印時從頭部遍歷直到結尾符結束。
不能將字符串與字符常量混淆。字符常量可以賦值給字符變量,但不能把一個字符串常量賦給一個字符變量,同時也不能對字符串常量賦值!例如:char b=‘a’;(正確) char b= “a”;(錯誤)
三、變量
3.1 字節的概念
計算機中將字節(Byte)作為計量存儲容量和傳輸容量的一種計量單位,一個字節等于8位二進制數。在內存中個位的空間可以存儲的數值只有0和1兩種,兩個位可以存儲的數值可能是00、01、10和11。這四個數值分別代表的就是0、1、2、3。依此類推,如果有4個位的空間可以存儲的數字就是:0-15(0x0到0xF)。
由此可見,內存空間上N個位可以存儲的數值就是2的N次方個。
一個字節代表8個位的內存空間,可以存儲的數值就是2的8次方個,即0到255之間的數值,十六進制表達是0x00到0xFF之間的數值
3.2 變量的分類
C語言變量,是指一段用于存取數據的內存空間。
根據當個變量的空間長短可分為:
字符型變量(1個字節):char類型、unsigned char類型;
短型變量(2個字節):short類型、unsigned short類型;
長型變量(4個字節):int、unsigned int(或long、unsigned long)或float類型以及指針變量等。
超長型變量( 8個字節):double類型、__int64等。
根據類型可以分為:
整數型變量:包括char、 unsigned char、short、 unsigned short、int、 unsigned int(或long、unsigned long )以及 __int64等。
浮點數型變量:float類型(單精度)、double類型(雙精度);
其他變量類型還有:指針變量:數組變量以及結構體對象等;
3.3 變量的存儲范圍
從上表看出4個位表達的剛好是十六進制數字的個位數,如果再加4個位8位剛好表達的就是十六進制的兩位數。因此計算機以8個位代表一個字節,表達的數字是(0-255)0x00到0xFF之間的數字總共256個,就像十進制中的兩位數是0到99總共100個那樣。
3.3.1 單字節變量(8位)
單字節變量(8位): unsigned char和char
unsigned char:無符號單字節變量,存儲范圍是0-255(0xFF)。
char:有符號單字節變量,存儲范圍是-128到0到127之間的數。
為了讓char類型存儲的256種數字中,一半是正數一半是負數,計算機將char類型變量中的最高位作為符號位。最高位為0的是正數,最高位為1是負數。
在負數區間,將unsigned char的數值減去256就是char類型。
3.3.2 雙字節變量(16位)unsigned short和short
unsigned short:無符號雙字節變量,存儲的范圍是0-65535(0xFFFF) 總共65536個,就像十進制中的4位數是0到9999總共10000個那樣
short :有符號雙字節變量,存儲范圍是-32768到0到32767。
為了讓short類型存儲的65536種數字中,一半是正數一半是負數,計算機將short類型變量中的最高位作為符號位。最高位為0的代表正數,最高位為1代表負數。
在負數區間,將unsigned short的數值減去65536就是short類型的數值。
3.3.3 四字節變量(32位): unsigned int和int(或unsigned long和long)
unsigned int:無符號四字節變量,存儲的范圍是0-4294967295(0xFFFFFFFF) 總共4294967296個,就像十進制中的8位數是0到99999999總共100000000個那樣
int:有符號四字節變量,存儲范圍是-2147483648到0到2147483647。
在計算機中:1K=1024,1M=1024K,1G=1024M。
65536剛好被1024整除等于64,因此65536也稱為64K,32768稱為32K; 4294967296剛好被3個1024整除,因此也稱為4G,2147483648稱為2G。
為了讓int類型存儲的4G種數字中,一半是正數一半是負數,計算機將int類型變量中的最高位作為符號位。最高位為0的代表正數,最高位為1代表負數。
在負數區間,將unsigned int的數值減去4G就是int類型的數值。
3.3.4 其他類型變量
指針變量:在32位操作系統中也是32位的,存儲范圍是0-0xFFFFFFFF之間。
浮點數類型:浮點數變量的存儲結構與整型變量的存儲結構完全不同。
float類型小數部分最多可以精確到6到7位,整數位數增長會占用小數部分。
double 類型的小數部分至少要能精確到小數點后 10 位以上,整數位數增長會影響到小數部分的精確度。
總結
以上是生活随笔為你收集整理的c语言变量加常量,C语言(二)---常量与变量(示例代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tomcat日志中文乱码问题
- 下一篇: java求两点坐标间的距离