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