C語(yǔ)言中你容易忽略的知識(shí)點(diǎn)與技巧總結(jié)
??♀?前言
大家有沒(méi)有一種感覺(jué),隨著一門編程語(yǔ)言的學(xué)習(xí),或者是一門課程的學(xué)習(xí),經(jīng)過(guò)系統(tǒng)的學(xué)習(xí)后,總會(huì)遺忘或者不熟悉一些有用的內(nèi)容,甚至一些基本的知識(shí)點(diǎn),博主將開(kāi)啟一個(gè)系列來(lái)集錦這些愛(ài)逃跑的內(nèi)容.
??字符串常量
像"ABC"和’‘您好!’'這樣用雙引號(hào)(" ") 括起來(lái)的一連串連續(xù)排列的文字,稱為字符串常量(string literal)
??輸出函數(shù)puts
//兩個(gè)整數(shù)的和 #include <stdio.h> int main() { int n1; int n2; puts("請(qǐng)輸入兩個(gè)整數(shù)"); printf("整數(shù)1:"); scanf("%d",&n1); printf("整數(shù)2:"); scanf("%d",&n2); printf("它們的和是%d",n1+n2); return 0; }
這里用到了puts函數(shù)(末尾的s取自string)
puts函數(shù)可以按順序輸出作為實(shí)參的字符串,并在結(jié)尾換行。也就是說(shuō),puts("…")和printf("…\n")的功能是差不多的.
??在需要換行且不用進(jìn)行格式化輸出的時(shí)候,就可以使用puts函數(shù)來(lái)代替printf函數(shù)
- puts函數(shù)的實(shí)參只能有一個(gè)。符號(hào)%的顯示方法與printf有所不同
- printf函數(shù)的第一個(gè)實(shí)參是格式化字符串。格式化字符串中可以包含用來(lái)指定實(shí)參的格式的轉(zhuǎn)換說(shuō)明。格式化字符串中轉(zhuǎn)換說(shuō)明以外的字符,基本上原樣輸出。
- puts函數(shù)在輸出字符串后,還會(huì)輸出換行符
- scanf函數(shù)時(shí)讀取通過(guò)鍵盤輸入的數(shù)值并將其存儲(chǔ)在變量中的函數(shù)。使用scanf函數(shù)時(shí),變量名前需要加上&。轉(zhuǎn)換說(shuō)明%d指定了讀取十進(jìn)制數(shù).
??除法運(yùn)算的商和余數(shù)
除法運(yùn)算有兩種。通過(guò)除法求商的運(yùn)算符是 /
整數(shù)/整數(shù) 商的整數(shù)部分
如上所示,除法運(yùn)算只取商的整數(shù)部分,也就是會(huì)舍棄小數(shù)點(diǎn)以后的部分。例如,5/3的結(jié)果是1,3/5的結(jié)果是0.
整數(shù)%整數(shù) 余數(shù)
??獲取整數(shù)的最后一行數(shù)字
顯示讀取出的整數(shù)的最后一行數(shù)字
#include <stdio.h> int main() { int no; printf("請(qǐng)輸入一個(gè)整數(shù)"); scanf("%d", &no); //no除以10所得的余數(shù) printf("最后一位是%d\n", no % 10); return 0; }
??除法運(yùn)算的結(jié)果
進(jìn)行除法運(yùn)算的/運(yùn)算符的運(yùn)算結(jié)果是依賴于編譯器的。
兩個(gè)操作符都是正數(shù)時(shí)
x/y | x%y | |
---|---|---|
正/正 例x = 22,y = 5 | 4 | 2 |
兩個(gè)操作數(shù)中至少有一個(gè)為負(fù)數(shù)時(shí)
至于/運(yùn)算符的結(jié)果是“小于代數(shù)商的最大整數(shù)”還是“大于代數(shù)商的最小整數(shù)”,要取決于編譯器。
x/y | x%y | |
---|---|---|
負(fù)/負(fù) 例x = -22,y = -5 | 4 | -2 |
5 | 3 | |
負(fù)/正 例x= -22,y = 5 | -4 | -2 |
-5 | 3 | |
正/負(fù) 例x = 22,y = -5 | -4 | 2 |
-5 | -3 |
??和x,y的符號(hào)無(wú)關(guān)(只要y不是0),(x/y)*y+x%y的值和x一致
??有關(guān)賦值
基本賦值運(yùn)算符 a=b 把b的值賦給a
基本賦值運(yùn)算符一般簡(jiǎn)稱為賦值運(yùn)算符
表達(dá)式由變量和常量,以及連接他們的運(yùn)算符組成。
vx + 32 進(jìn)行加法運(yùn)算的表達(dá)式
其中,vx,vx+32都是表達(dá)式
vc = vx + 32 賦值表達(dá)式
其中 vc,vx,32,vx+32和vc = vx+32都可以看作表達(dá)式。當(dāng)然,vc是賦值運(yùn)算符 = 的第一操作數(shù),vx+32是第二操作數(shù)。
一般情況下 使用什么運(yùn)算符的表達(dá)式,稱為什么表達(dá)式。因此,使用賦值運(yùn)算符的表達(dá)式,就稱為賦值表達(dá)式。
??表達(dá)式語(yǔ)句
vc = vx + 32; 表達(dá)式語(yǔ)句
這種由表達(dá)式和分號(hào)組成的語(yǔ)句稱為表達(dá)式語(yǔ)句。
# ??使用printf函數(shù)輸出% 格式化字符串中寫的是**%%**。這里的格式化字符串中的**%**符號(hào)具有轉(zhuǎn)換說(shuō)明的功能。因此,當(dāng)不需要進(jìn)行轉(zhuǎn)換說(shuō)明,而只想輸出**%**的時(shí)候,就必須寫成 **%%**
當(dāng)使用不具有轉(zhuǎn)換功能的puts函數(shù)來(lái)進(jìn)行輸出的時(shí)候,就不能寫成**%%(這樣會(huì)輸出%%**的)
??double類型的運(yùn)算
讀取兩個(gè)實(shí)數(shù)值,顯示出他們的和,差,積,商。
#include <stdio.h> int main() { double vx; double vy; puts("請(qǐng)輸入兩個(gè)數(shù)"); scanf("%lf %lf", &vx, &vy);//小寫英文字母l printf("vx + vy = %f\n", vx + vy); printf("vx - vy = %f\n", vx - vy); printf("vx * vy = %f\n", vx * vy); printf("vx / vy = %f\n", vx / vy); return 0; }
double類型不能使用余數(shù)的運(yùn)算符%
double類型的變量通過(guò)scanf函數(shù)賦值的時(shí)候需要使用字符串 %lf ,請(qǐng)注意這一點(diǎn)。
int | double | |
---|---|---|
使用printf函數(shù)顯示 | printf("%d", no) | printf("%f", no) |
使用scanf函數(shù)讀取 | printf("%d",&no) | scanf("%lf",no) |
??數(shù)據(jù)類型和運(yùn)算
進(jìn)行整數(shù)/整數(shù)運(yùn)算的時(shí)候,商的小數(shù)部分會(huì)被舍棄,但是浮點(diǎn)數(shù)之間的運(yùn)算,就不會(huì)進(jìn)行舍棄處理。
運(yùn)算符%本身的特性決定了它只能用于整數(shù)之間的運(yùn)算,而不能用于浮點(diǎn)數(shù)之間的運(yùn)算。
int / int ->int double / double -> double double / int -> double int / double ->double
由于C語(yǔ)言包含了許多種數(shù)據(jù)類型,詳細(xì)的規(guī)則非常復(fù)雜,因此我們可以大致理解如下
- ??運(yùn)算對(duì)象,即操作數(shù)的類型不同時(shí),較小的數(shù)據(jù)類型的操作數(shù)會(huì)轉(zhuǎn)換為較大的數(shù)據(jù)類型(范圍更大),然后再進(jìn)行運(yùn)算
- 所謂的“較大的數(shù)據(jù)類型”,并不是說(shuō)double類型實(shí)際上比int類型更大,而是說(shuō)它還可以保存小數(shù)點(diǎn)之后的部分。 總結(jié)
(●’?’●)今天就先到這里啦,本欄目預(yù)計(jì)有十期,全部完結(jié)了會(huì)發(fā)布總結(jié)篇,方便大家復(fù)習(xí)查找,涵蓋所有C語(yǔ)言哦
總結(jié)
到此這篇關(guān)于C語(yǔ)言中你容易忽略的知識(shí)點(diǎn)與技巧總結(jié)的文章就介紹到這了,更多相關(guān)C語(yǔ)言知識(shí)點(diǎn)與技巧內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Visual?Studio2022下Opencv的配置圖文教程
本文主要介紹了Visual?Studio2022下Opencv的配置圖文教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07C++實(shí)現(xiàn)LeetCode(201.數(shù)字范圍位相與)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(201.數(shù)字范圍位相與),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08C++實(shí)現(xiàn)LeetCode(198.打家劫舍)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(198.打家劫舍),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-0816種C語(yǔ)言編譯警告(Warning)類型的解決方法
由于編譯的警告各種各樣,根本不可以一一羅列出來(lái),下面只是列舉出比較典型的十六種警告,還有一些警告,大家只要根據(jù)字面意思,就可以很快的查找出來(lái),并解決之。希望對(duì)大家有所幫助。2014-08-08C++順序容器(vector、deque、list)的使用詳解
本文主要介紹了C++順序容器(vector、deque、list)的使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06C++構(gòu)造函數(shù)和析構(gòu)函數(shù)的使用與講解
今天小編就為大家分享一篇關(guān)于C++構(gòu)造函數(shù)和析構(gòu)函數(shù)的使用與講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12