C語言基礎知識

2021-09-10 08:08:51 字數 4055 閱讀 6170

整型int

乙個整數占用32位(bit),即4位元組(byte),取值範圍 -231~(231-1) 即絕對值109以內整數。

長整型long long

乙個整數占用64位(bit),即8位元組(byte),取值範圍 -263~(263-1) 即絕對值1018以內整數;

當賦予大於231-1的初值時,初值後應加上ll。

浮點型float double

單精度和雙精度浮點數分別占用32,64bit;但前者有效精度只有6 ~7位,後者有15 ~16位。

字元型

小寫字母ascii碼比大寫字母大32。

布林型

整型常量在賦值給布林型時會自動轉換為true(非零)或false(零);但在計算機中true儲存為1,false儲存為0。

const常量

const

int inf=(1

<<30)

-1;

const

double eps=

1e-8

;const

double pi=

acos(-

1.0)

;#define equ(a,b) (fabs((a)-(b))<(eps))

#define more(a,b) (((a)-(b))>(eps))

#define less(a,b) (((a)-(b))<(-eps))

#define moreequ(a,b) (((a)-(b))>(-eps))

#define lessequ(a,b) (((a)-(b))<(eps))

fabs(double x)

對double型變數取絕對值

floor(double x) 和 ceil(double x)

對double型變數向下和向上取整

pow(double r,double p)

rpsqrt(double x)

double型變數算術平方根

log(double x)

double型變數以自然數為底的對數

sin(double x) cos(double x) tan(double x)

正弦,余弦和正切值,引數要求為弧度制

double db=

sin(pi*45/

180)

;printf

("%f"

,db)

;

0.707107

round(double x)

將double型變數四捨五入,返回值也是double型,需進行取整

double db=

round

(3.49);

printf

("%d\n%d\n",(

int)db)

;

break用於跳出迴圈,continue用於結束當前迴圈,直接進入下一輪迴圈

若將整個陣列都賦初值0:

//直接用乙個大括號表示 

int arr[10]

=;//將陣列的第乙個元素賦值為0

int arr[10]

=;

memset()

memset(陣列名,值,sizeof(陣列名))

memset是按照位元組賦值,因此對於int型整數其4個位元組會賦同樣的值,一般賦值0或-1

#include

#include

intmain()

}

0 0 0 0 0

對於乙個普通定義的結構體,其內部生成乙個不可見的預設建構函式,因此可以不經初始化就定義結構體型別的變數。

struct stuinfo

};

但是當結構體內變數很多時賦值比較複雜,因此可以重新定義建構函式。

struct stuinfo

};

或者可以簡化為一行

struct stuinfo

};

重新定義建構函式後,可以在需要時直接對結構體變數進行賦值

stuinfo stu=

stuinfo

(1203

,'m'

);

但是重新定義建構函式後,由於預設生成的建構函式被覆蓋,不能不經初始化就定義結構體變數。可以將其手動加上,只要引數個數和型別不完全相同,就可以定義任意多個建構函式以適應不同的初始化需要。

struct stuinfo

//只初始化gender

stuinfo

(char _gender)

:gender

(_gender)

//同時初始化id和gender

stuinfo

(int _id,

char _gender):id

(_id)

,gender

(_gender)

};

scanf() printf()

scanf()中,%c格式能夠識別空格換行並將其輸出;%s通過空格換行來識別乙個字串的結束

getchar() putchar()

輸入輸出單個位元組

gets() puts()

gets()用來輸入一行字串,識別換行符作為結束,並將其儲存在一維陣列中;

在使用scanf()後,若使用gets(),需先用getchar()接受換行符。

puts()用來輸出一行字串,即將一維陣列在介面上輸出,並跟乙個換行

#include

intmain()

sscanf() sprintf()

sscanf

(str,

"%d"

,&n)

;

將陣列str中的內容以%d的格式寫入n中

sprintf

(str,

"%d"

,n);

將n中的內容以%d的格式寫入str中

cin() cout()

要讀入一整行,需使用getline()函式

char str[

100]

; cin.

getline

(str,

100)

;

若為string容器,則用如下方式輸入

string str;

getline

(cin,str)

;

string.h標頭檔案

#include

#include

intmain()

3

str1xyzxyzxyz

C語言基礎知識

1 的問題。int i 1 int j 2 int k i j printf d k 輸出k為3。編譯原理有關編譯器在詞法解析的時候,對於運算子,總是查詢最大的匹配也就是說,i j,編譯器在找到 的時候,它不立即理解為 而是繼續下乙個字元,下乙個字元仍然是 可以組成 再往下的話便是 不成立了。所以i...

C語言基礎知識

一 位元組對齊 位元組對齊的原因,是機器在訪問記憶體中儲存的資料的高效性。通常機器是機器位數為自然邊界來訪問記憶體的,如果乙個4位元組整形數,所在的記憶體不在虛擬記憶體的自然邊界。則cpu需要讀多於一次的資料,這樣就降低了效率。所以,簡單地說,就是保證cpu指令在訪問資料的時候,能一次讀取,而不需要...

C語言基礎知識

1.進製 1 基數 基數為n,代表n進製 2 位權 從個位開始,向左依次編號為0,1.x 分別代表n進 制的x次 3 八進位制以0開頭,十六進製制以0x開頭 4 x 進製轉 進製 按權求和 十進位制轉 x進製 連除倒取餘 2.基本資料型別 3.常量 程式執行期間值不能被改變的量 分為 整型常量,浮點...