變量:
變量的意義確定目標(biāo)并提供存放的空間
變量的命名規(guī)則:
- 只能以字母或下劃線開(kāi)始
- 不能以數(shù)字開(kāi)始
- 一般小寫
- 關(guān)鍵字不允許用
常量:
- define預(yù)處理器
- const關(guān)鍵字
- 兩者區(qū)別
define 與const
符號(hào)變量define是預(yù)編譯指令赠堵,在預(yù)編譯的時(shí)候僅僅進(jìn)行字符替換善绎,預(yù)編譯后符號(hào)常量就不存在了伐弹,例如define PI 3.1415926 笤虫,編譯以后就不存在PI了穆碎,所有的PI都被換成了3.1415926延欠。而且PI沒(méi)有存儲(chǔ)單元峡竣。而常變量const變量要占用存儲(chǔ)單元现恼,有變量值愧捕,只是值不能改奢驯,它有符號(hào)變量的優(yōu)點(diǎn),而且比較方便次绘。
1.const定義的常數(shù)帶類型瘪阁,define不帶類型撒遣,
2.const是在 編譯運(yùn)行的時(shí)候起作用,而define是在編譯的預(yù)處理階段起作用管跺。
3.define只是簡(jiǎn)單的字符串替換义黎,沒(méi)有類型檢查。而const有對(duì)應(yīng)的數(shù)據(jù)類型豁跑,是要進(jìn)行判斷的廉涕,可以避免一些低級(jí)的錯(cuò)誤。
4.#deifne定義后賦值不可修改艇拍,const可通過(guò)指針修改
二進(jìn)制狐蜕,八進(jìn)制,十進(jìn)制卸夕,十六進(jìn)制
二進(jìn)制機(jī)器識(shí)別
我們習(xí)慣于十進(jìn)制的數(shù)
一個(gè)位只能表示0层释,或者1兩種狀態(tài),簡(jiǎn)稱bit,一個(gè)位是一個(gè)bit.
一個(gè)字節(jié)為八個(gè)二進(jìn)制,稱為8位娇哆,簡(jiǎn)稱BYTE湃累,八個(gè)比特是一個(gè)字節(jié)
一個(gè)字為兩個(gè)字節(jié),簡(jiǎn)稱WORD碍讨,兩個(gè)字為雙字治力,簡(jiǎn)稱DWORD。八進(jìn)制以八為基數(shù)的數(shù)制系統(tǒng)勃黍,C語(yǔ)言當(dāng)中0表示八進(jìn)制宵统,如0444
十六進(jìn)制以十六為基數(shù)的數(shù)制系統(tǒng),C語(yǔ)言當(dāng)中0X表示八進(jìn)制覆获,如0X12
原碼马澈,反碼,補(bǔ)碼
原碼:用第一個(gè)數(shù)表示符號(hào)弄息,其余表示值痊班。因?yàn)榈谝晃皇欠?hào)位,所以8位二進(jìn)制數(shù)的取值范圍就是:[1111_1111 , 0111_1111] 即 [-127 , 127] ,原碼是容易被人腦所理解的表達(dá)方式
反碼:正數(shù)的補(bǔ)碼反碼是其本身摹量,負(fù)數(shù)的反碼是符號(hào)位保持不變涤伐,其余位取反。例如正數(shù)1的原碼是[0000_0001]缨称,它的反碼是是其本身[0000_0001],
-1的原碼是[1000_0001],其反碼是[1111_1110].補(bǔ)碼:正數(shù)的補(bǔ)碼是其本身凝果,負(fù)數(shù)的補(bǔ)碼是在其反碼的基礎(chǔ)上+1,例如正數(shù)1的原碼是[0000_0001],他的補(bǔ)碼是其本身[0000_0001],
-1的補(bǔ)碼是[1111_1111]
大端對(duì)齊與小端對(duì)齊
- 大端對(duì)齊:高位字節(jié)放在內(nèi)存低端睦尽,低位字節(jié)放在內(nèi)存高端
- 小端對(duì)齊:高位字節(jié)放在內(nèi)存高端器净,低位字節(jié)放在內(nèi)存低端
變量
int
- int 是一個(gè)32位二進(jìn)制整數(shù),在內(nèi)存中展4個(gè)字節(jié)
C 中用%d printf輸出一個(gè)有符號(hào)的整數(shù)当凡,%u printf輸出一個(gè)無(wú)符號(hào)的整數(shù) - 整數(shù)溢出
計(jì)算一個(gè)整數(shù)的時(shí)候超過(guò)整數(shù)能夠容納最大的單位后山害,整數(shù)會(huì)溢出纠俭,溢出的結(jié)果就是高位舍棄。
當(dāng)一個(gè)小的整數(shù)賦值給大的整數(shù)浪慌,符號(hào)位不會(huì)丟失柑晒,會(huì)繼承。
char
char 占用一個(gè)字節(jié)的大小的字符眷射,本質(zhì)是一個(gè)整數(shù),一個(gè)只有一個(gè)字節(jié)的整數(shù)佛掖。
char carry[];
字符串
int array[] 數(shù)組
定義方式
char t[];
char t[10];
char t[10]={0}
浮點(diǎn)數(shù)
如果是整數(shù)計(jì)算妖碉,盡量不要用浮點(diǎn)數(shù),浮點(diǎn)數(shù)的效率很低
float: 四個(gè)字節(jié)
double: 八個(gè)字節(jié)
long double : 十六個(gè)字節(jié)
vloat
是一個(gè)修飾符芥被,防止編譯器優(yōu)化代碼欧宜,因?yàn)檫@個(gè)變量可能會(huì)被意外的地方或不同線程修改,加上這個(gè)關(guān)鍵字編譯器就不會(huì)去假設(shè)這個(gè)值了
register
聲明變量在CPU寄存器里面
volatile的變量是說(shuō)這變量可能會(huì)被意想不到地改變拴魄,這樣冗茸,編譯器就不會(huì)去假設(shè)這個(gè)變量的值了
scanf
通過(guò)獲取鍵盤放入變量中,變量一點(diǎn)要使用變量地址接收
%o輸出八進(jìn)制無(wú)符號(hào)的
%c輸出字符
%d輸出整數(shù)
%x輸出16進(jìn)制小寫
%X輸出16進(jìn)制大寫
\t輸出空格
%f輸出浮點(diǎn)數(shù)