C語言中你容易忽略的知識點與技巧總結(jié)
??♀?前言
大家有沒有一種感覺,隨著一門編程語言的學(xué)習(xí),或者是一門課程的學(xué)習(xí),經(jīng)過系統(tǒng)的學(xué)習(xí)后,總會遺忘或者不熟悉一些有用的內(nèi)容,甚至一些基本的知識點,博主將開啟一個系列來集錦這些愛逃跑的內(nèi)容.
??字符串常量
像"ABC"和’‘您好!’'這樣用雙引號(" ") 括起來的一連串連續(xù)排列的文字,稱為字符串常量(string literal)
??輸出函數(shù)puts
//兩個整數(shù)的和
#include <stdio.h>
int main()
{
int n1;
int n2;
puts("請輸入兩個整數(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ù)可以按順序輸出作為實參的字符串,并在結(jié)尾換行。也就是說,puts("…")和printf("…\n")的功能是差不多的.
??在需要換行且不用進行格式化輸出的時候,就可以使用puts函數(shù)來代替printf函數(shù)
- puts函數(shù)的實參只能有一個。符號%的顯示方法與printf有所不同
- printf函數(shù)的第一個實參是格式化字符串。格式化字符串中可以包含用來指定實參的格式的轉(zhuǎn)換說明。格式化字符串中轉(zhuǎn)換說明以外的字符,基本上原樣輸出。
- puts函數(shù)在輸出字符串后,還會輸出換行符
- scanf函數(shù)時讀取通過鍵盤輸入的數(shù)值并將其存儲在變量中的函數(shù)。使用scanf函數(shù)時,變量名前需要加上&。轉(zhuǎn)換說明%d指定了讀取十進制數(shù).
??除法運算的商和余數(shù)
除法運算有兩種。通過除法求商的運算符是 /
整數(shù)/整數(shù) 商的整數(shù)部分
如上所示,除法運算只取商的整數(shù)部分,也就是會舍棄小數(shù)點以后的部分。例如,5/3的結(jié)果是1,3/5的結(jié)果是0.
整數(shù)%整數(shù) 余數(shù)
??獲取整數(shù)的最后一行數(shù)字
顯示讀取出的整數(shù)的最后一行數(shù)字
#include <stdio.h>
int main()
{
int no;
printf("請輸入一個整數(shù)");
scanf("%d", &no);
//no除以10所得的余數(shù)
printf("最后一位是%d\n", no % 10);
return 0;
}
??除法運算的結(jié)果
進行除法運算的/運算符的運算結(jié)果是依賴于編譯器的。
兩個操作符都是正數(shù)時
| x/y | x%y | |
|---|---|---|
| 正/正 例x = 22,y = 5 | 4 | 2 |
兩個操作數(shù)中至少有一個為負數(shù)時
至于/運算符的結(jié)果是“小于代數(shù)商的最大整數(shù)”還是“大于代數(shù)商的最小整數(shù)”,要取決于編譯器。
| x/y | x%y | |
|---|---|---|
| 負/負 例x = -22,y = -5 | 4 | -2 |
| 5 | 3 | |
| 負/正 例x= -22,y = 5 | -4 | -2 |
| -5 | 3 | |
| 正/負 例x = 22,y = -5 | -4 | 2 |
| -5 | -3 |
??和x,y的符號無關(guān)(只要y不是0),(x/y)*y+x%y的值和x一致
??有關(guān)賦值
基本賦值運算符 a=b 把b的值賦給a
基本賦值運算符一般簡稱為賦值運算符
表達式由變量和常量,以及連接他們的運算符組成。
vx + 32 進行加法運算的表達式
其中,vx,vx+32都是表達式
vc = vx + 32 賦值表達式
其中 vc,vx,32,vx+32和vc = vx+32都可以看作表達式。當然,vc是賦值運算符 = 的第一操作數(shù),vx+32是第二操作數(shù)。
一般情況下 使用什么運算符的表達式,稱為什么表達式。因此,使用賦值運算符的表達式,就稱為賦值表達式。
??表達式語句
vc = vx + 32; 表達式語句
這種由表達式和分號組成的語句稱為表達式語句。
# ??使用printf函數(shù)輸出% 格式化字符串中寫的是**%%**。這里的格式化字符串中的**%**符號具有轉(zhuǎn)換說明的功能。因此,當不需要進行轉(zhuǎn)換說明,而只想輸出**%**的時候,就必須寫成 **%%**

當使用不具有轉(zhuǎn)換功能的puts函數(shù)來進行輸出的時候,就不能寫成**%%(這樣會輸出%%**的)
??double類型的運算
讀取兩個實數(shù)值,顯示出他們的和,差,積,商。
#include <stdio.h>
int main()
{
double vx;
double vy;
puts("請輸入兩個數(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ù)的運算符%
double類型的變量通過scanf函數(shù)賦值的時候需要使用字符串 %lf ,請注意這一點。
| int | double | |
|---|---|---|
| 使用printf函數(shù)顯示 | printf("%d", no) | printf("%f", no) |
| 使用scanf函數(shù)讀取 | printf("%d",&no) | scanf("%lf",no) |
??數(shù)據(jù)類型和運算
進行整數(shù)/整數(shù)運算的時候,商的小數(shù)部分會被舍棄,但是浮點數(shù)之間的運算,就不會進行舍棄處理。
運算符%本身的特性決定了它只能用于整數(shù)之間的運算,而不能用于浮點數(shù)之間的運算。
int / int ->int double / double -> double double / int -> double int / double ->double
由于C語言包含了許多種數(shù)據(jù)類型,詳細的規(guī)則非常復(fù)雜,因此我們可以大致理解如下
- ??運算對象,即操作數(shù)的類型不同時,較小的數(shù)據(jù)類型的操作數(shù)會轉(zhuǎn)換為較大的數(shù)據(jù)類型(范圍更大),然后再進行運算
- 所謂的“較大的數(shù)據(jù)類型”,并不是說double類型實際上比int類型更大,而是說它還可以保存小數(shù)點之后的部分。 總結(jié)
(●’?’●)今天就先到這里啦,本欄目預(yù)計有十期,全部完結(jié)了會發(fā)布總結(jié)篇,方便大家復(fù)習(xí)查找,涵蓋所有C語言哦
總結(jié)
到此這篇關(guān)于C語言中你容易忽略的知識點與技巧總結(jié)的文章就介紹到這了,更多相關(guān)C語言知識點與技巧內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺析C++模板類型中的原樣轉(zhuǎn)發(fā)和可變參數(shù)的實現(xiàn)
可變參數(shù)模板(variadic templates)是C++11新增的強大的特性之一,它對模板參數(shù)進行了高度泛化,能表示0到任意個數(shù)、任意類型的參數(shù),這篇文章主要介紹了C++可變參數(shù)模板的展開方式,需要的朋友可以參考下2022-08-08
C語言函數(shù)指針數(shù)組實現(xiàn)計算器功能
這篇文章主要通過C語言函數(shù)指針數(shù)組實現(xiàn)了計算器的功能,是一個很好而且流程詳細的小例子,感興趣的新手朋友們可以自己動手也寫一遍2022-04-04
C++ 實現(xiàn)一個復(fù)數(shù)類的實例代碼
這篇文章主要介紹了C++ 實現(xiàn)一個復(fù)數(shù)類的實例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04
在C++中高效使用和處理Json格式數(shù)據(jù)的示例代碼
最近的項目在用c處理后臺的數(shù)據(jù)時,因為好多外部接口都在使用Json格式作為返回的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)描述,如何在c中高效使用和處理Json格式的數(shù)據(jù)就成為了必須要解決的問題,需要的朋友可以參考下2023-11-11

