C:基礎(chǔ)(1)

起源與概括

1973年,為了Unix系統(tǒng)魄眉,貝爾實驗室發(fā)明砰盐。標(biāo)準(zhǔn)化兩個:C89(也就是ISO C90)和C99。C語系有:C++坑律、Java岩梳、perl、C#等晃择。特點:底層(與硬件接觸)冀值、小型(有限的語言特性;依賴標(biāo)準(zhǔn)函數(shù)庫)宫屠、包容性等列疗。

主函數(shù)main函數(shù)有且只能有一個,c89默認(rèn)返回值是int浪蹂,c99中規(guī)定必須寫成int man()相對應(yīng)有了return 0抵栈。用/* */注釋的時候,系統(tǒng)會自動從/*開始坤次,遇到下一個*/結(jié)束古劲,所以中間出現(xiàn)*是沒有問題的(引申各種格式的注釋,包括盒子一樣的)缰猴。

五大類型:基本數(shù)據(jù)類型产艾、構(gòu)造數(shù)據(jù)類型、指針類型滑绒、空闷堡、自定義類型。

三大結(jié)構(gòu):順序結(jié)構(gòu)疑故、選擇結(jié)構(gòu)杠览、循環(huán)結(jié)構(gòu)。


位操作

&按位與纵势,|或倦零,~取反误续,^異或吨悍,<<左移扫茅,>>右移

位操作都是針對二進(jìn)制進(jìn)行,假設(shè)原來的數(shù)為a育瓜,取反相當(dāng)于-1-a葫隙,移動如a<<n,左移n位躏仇。移動時恋脚,低位補0,高位移出焰手。

應(yīng)用:數(shù)據(jù)交換糟描、異或?qū)崿F(xiàn)文件加密(一次加密,二次解密)书妻。


變量與字符

變量是內(nèi)存中的一片空間船响,有名字及類型,類型決定了變量在內(nèi)存中空間的大小躲履,名稱可以是字母见间、數(shù)字和下劃線的組合,開頭第一個字符不能是數(shù)字工猜。且不能是C中的關(guān)鍵詞米诉,如int、if篷帅、struct之類史侣,C中區(qū)分大小寫,如是INT等就可以魏身。定義(類型 名稱)→賦值(assign惊橱,賦值符=)。

基本類型:

計算機(jī)基本的計算單位是字節(jié)(Bytes)叠骑,每個字節(jié)是8個二進(jìn)制的位(bit)李皇。

整型和字節(jié)數(shù)

1. 整型與字符型

除了整型外,其余定義的時候宙枷,int可以省略掉房,如 long long a。unsigned開頭的慰丛,代表無符號卓囚,即非負(fù),里面所有的d替換成u進(jìn)行輸入輸出诅病。如果要顯示02這種格式哪亿,可以用%.2d粥烁,如果沒有小數(shù)點,輸出的會有兩個字符蝇棉,但其中一個是空格讨阻,%-表示左對齊。

整數(shù)在實際保存的時候篡殷,是按照二進(jìn)制保存钝吮。但賦值的時候有三種方式:十進(jìn)制(平時的寫法)、八進(jìn)制(數(shù)字0開頭)和十六進(jìn)制(0x開頭)板辽。在輸出時:十進(jìn)制是d奇瘦,八進(jìn)制是#o,十六進(jìn)制是#x(如果是X劲弦,表示輸入或者輸出的時候耳标,里面的字母是大寫的),#表示顯示前綴,沒有則不顯示邑跪。

char字符型次坡,單個字符(1個字節(jié)),包括字母單個數(shù)字空格等字符呀袱。ASCII碼中贸毕,’A’的編碼是65,’a’是97夜赵。中文字符是字符串明棍,10也已經(jīng)是字符串了(所以之前看到的一個定義紙牌上從A到K,用的是二維數(shù)組而不是一維)寇僧。

2. 浮點型

可以用科學(xué)計數(shù)法表示數(shù)據(jù)浮點數(shù)摊腋,永遠(yuǎn)無法精確表示。float是四個字節(jié)嘁傀,double是八個兴蒸,long double是16個。

%g用來輸出實數(shù)细办,它根據(jù)數(shù)值的大小橙凳,自動選f格式或e格式(選擇輸出時占寬度較小的一種),且不輸出無意義的0笑撞。即%g是根據(jù)結(jié)果自動選擇科學(xué)記數(shù)法還是一般的小數(shù)記數(shù)法岛啸。%f默認(rèn)保留6位小數(shù),要制定保留的小數(shù)位數(shù)茴肥,用%.nf坚踩,n為要保留的位數(shù)。

注意瓤狐,a=.123, b=5e6是有意義的賦值語句瞬铸。另外批幌,scanf函數(shù)會跳過空白字符(white-space,包括空格嗓节、橫向和縱向制表符荧缘、換頁符和換行符)根據(jù)格式來匹配讀數(shù)。

備注(C的32個關(guān)鍵詞赦政,我按照自己的方式分了個類胜宇, 注意,main不是關(guān)鍵詞):

int, long, short, unsigned, signed, float, double, char, void, struct, union, enum, typedef, sizeof

if, else, do, while, switch, case, default, break, continue, goto, for, return

auto, extern, static, register, const, volatile

特殊字符

\n換行 \r回車(本行的行首) \t制表符(若干空格) \b退格符 \轉(zhuǎn)義符 %占位符 &取地址符

\轉(zhuǎn)義符:特殊符號的打印如雙引號”恢着、斜線,在前面加上\财破,百分號打印的時候是%%

%叫做占位符掰派,在標(biāo)準(zhǔn)化輸入輸出的時候,會先預(yù)留空間左痢,用后面的來替換靡羡。

scanf(“%*[^\n]”);從輸入緩沖區(qū)清空一行內(nèi)容(%*指跳過,后面的是指非換行符俊性,即一直跳過直到遇到換行符\n)


類型強(qiáng)轉(zhuǎn)換

C語言是弱類型的略步,類型不同的運算會先轉(zhuǎn)換成相同的類型再進(jìn)行。在使用強(qiáng)制轉(zhuǎn)換時應(yīng)注意以下問題:

1定页、類型說明符和表達(dá)式都必須加括號趟薄,如把(int)(x/2+y)寫成(int)x/2+y則成了把x/2轉(zhuǎn)換成int型之后再與y相加了。

2典徊、轉(zhuǎn)換后不會改變原數(shù)據(jù)的類型及變量值杭煎,只在本次運算中臨時轉(zhuǎn)換。

3卒落、強(qiáng)制轉(zhuǎn)換后的運算結(jié)果不遵循四舍五入原則羡铲。


?局部變量(local variable)和外部變量(即全局變量external variable)

函數(shù)中,一般是局部變量儡毕,static靜態(tài)存儲也切,只能賦值一次,程序執(zhí)行返回腰湾,不會丟失值雷恃。全局變量也有靜態(tài)存儲期限,且在文件中的作用域從變量聲明到閉合文件的末尾檐盟。


運算符(Operator)

優(yōu)先級最高的是()褂萧,最低的是賦值符號=(包括了*=、+=葵萎、-=导犹、/=唱凯、%=,但不包括自增++和自減--)谎痢。單目(正負(fù)號磕昼、自增自減、非)的優(yōu)先級大于雙目(四則運算节猿、大小比較票从、等于不等于、且或)大于三目(條件判斷?是:不是)滨嘱。

對于模運算峰鄙,即取余%,該運算只適合用兩個整數(shù)進(jìn)行取余運算太雨,且最后的結(jié)果取決于%前面的數(shù)吟榴,即取決于被模數(shù)的符號。

對于除法運算/囊扳,結(jié)果和參與運算的數(shù)類型相同吩翻,所以9/2會只得到整數(shù)部分4,float就可以得到結(jié)果锥咸。兩數(shù)中有一個為小數(shù)狭瞎,結(jié)果則為小數(shù),如:9.0/2 = 4.500000搏予。

比較運算的結(jié)果是邏輯值熊锭,結(jié)果為0或者1,邏輯運算符可以簡寫缔刹,如&&寫成&球涛,||寫成|纪吮,但寫兩個運算效率高些——因為在&&的情況下梢灭,有短路特性勺远,即如果已經(jīng)得知結(jié)果跨细,不會去繼續(xù)蚣录。

自增自減運算符仁卷,a++先參與運算后+1错邦,++a先+1后參與運算垂谢。(這里面包括輸出函數(shù)中的情況引谜,但有時候例如a+++a+++a++這種牍陌,結(jié)果取決于編譯器)

賦值運算的時候,左值不能是常數(shù)员咽、字面值(字符串等)和臨時值(如a+b)毒涧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市贝室,隨后出現(xiàn)的幾起案子契讲,更是在濱河造成了極大的恐慌仿吞,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捡偏,死亡現(xiàn)場離奇詭異唤冈,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)银伟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進(jìn)店門你虹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人彤避,你說我怎么就攤上這事傅物。” “怎么了忠藤?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵挟伙,是天一觀的道長。 經(jīng)常有香客問我模孩,道長,這世上最難降的妖魔是什么贮缅? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任榨咐,我火速辦了婚禮,結(jié)果婚禮上谴供,老公的妹妹穿的比我還像新娘块茁。我一直安慰自己,他們只是感情好桂肌,可當(dāng)我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布数焊。 她就那樣靜靜地躺著,像睡著了一般崎场。 火紅的嫁衣襯著肌膚如雪佩耳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天谭跨,我揣著相機(jī)與錄音干厚,去河邊找鬼。 笑死螃宙,一個胖子當(dāng)著我的面吹牛蛮瞄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谆扎,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼挂捅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了堂湖?” 一聲冷哼從身側(cè)響起闲先,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤状土,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后饵蒂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體声诸,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年退盯,在試婚紗的時候發(fā)現(xiàn)自己被綠了彼乌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡渊迁,死狀恐怖慰照,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情琉朽,我是刑警寧澤毒租,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站箱叁,受9級特大地震影響墅垮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜耕漱,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一算色、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧螟够,春花似錦灾梦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至寞宫,卻和暖如春萧福,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背淆九。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工统锤, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人炭庙。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓饲窿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親焕蹄。 傳聞我的和親對象是個殘疾皇子逾雄,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,823評論 1 10
  • ?1 C語言程序的結(jié)構(gòu)認(rèn)識 用一個簡單的c程序例子,介紹c語言的基本構(gòu)成、格式鸦泳、以及良好的書寫風(fēng)格银锻,使讀者對c語...
    CONLYOUC閱讀 8,712評論 9 66
  • 上班無疑是辛苦的,總是盼望著趕緊結(jié)束好好歇一會做鹰。中午休息時間到击纬,吧啦兩口飯,看看時間钾麸,還早更振。上午那么累,現(xiàn)在還...
    我是珊珊呀閱讀 153評論 0 0
  • 如果你在嘗試為你的工作饭尝、網(wǎng)站或者產(chǎn)品開發(fā)一款既實用又具高品質(zhì)特征的移動App肯腕,卻又困于缺乏資金和時間,那你就來對地...
    51340fef90e4閱讀 694評論 0 2
  • 如果這世界是場夢钥平, 我會不會在一個深夜驚醒实撒? 如果這世界是場夢, 我是否有勇氣握住你的手涉瘾? 到最后知态, 我還是沒有能...
    陸墨百沐嶼閱讀 171評論 0 1