C 型別和宣告

2022-09-19 08:00:12 字數 4228 閱讀 2076

1.1bool(布林值):布林值,取true或者false,佔1個位元組。

voidf(

int a,

int b)

;//a=b,則b1為true;否則為false;

}bool

is_open

(file*);

bool

greater

(int a,

int b)

bool b1=7;

//b1為false;

int i1=

true

;int i2

;//i1;i2均為1;

voidf(

int i);}

bool a =

true

;bool b =

true

;bool x = a + b;

bool y = a || b;

bool z = a - b;

cout <<

"x="

<< x <<

"; y="

<< y <<

"; z="

<< z << endl;

指標也能被隱式轉化為bool型別

voidg(

int*p);if

(p)//等價於p!=nullptr;

}

1.2 char //字元,如『a』或者』9』,佔1個位元組。signed char:-127~127;unsigned char:0~255;

計算任意字元所對應的整數值:

}//0的ascii碼為48

1.3 整型型別

整數型別包含int、signed int和unsigned int。整數還可以劃分成另外4種形式:short int、int、long int和long long int。其中,long int即long;long long int即long long。類似,short 是short int的同義詞;unsigned是unsigned int的同義詞;signed是signed int的同義詞。

1.4浮點數型別

預設情況下,浮點數字面值常量的型別是double;如果是想定義乙個float型別的常量,數字末尾記得加上字尾f和f;如:2.0f;2.9e-3f;

如果是想定義乙個long double型別的常量,數字末尾記得加上字尾l和l;如:2.0l;3.1415926l;

1.5字首和字尾

0 八進位制

0x 0x 十六進製制

u u unsigned

l l long

ll ll long long

字尾l和l可以與u和u結合一起使用,表達資料型別為unsigned long。

1.6 void 型別

一般來說,void有兩個作用;一是作為函式的返回型別表示該函式不返回任何實際的值;二是作為該指標的基本型別部分以表明指標所指物件的型別未知。

例如:void f(); //函式f不返回任何值

void *pv; //指標所指向的物件型別未知

可選的前置修飾符(static、virtual);

基本型別(vector、const int);

可選宣告符(p[7]、n);

可選字尾函式修飾符(const、noexcept);

可選初始化器和函式體(=、);

const charkings=;

基本型別是const char,宣告符是kings

注意virtual和extern、constexpr等用法。

//缺少資料型別

const c=7gt

(int a,

int b)

2.1宣告多個名字int x,y; //int x,int y;

int *x,y; //int *x,int y;

int x,*y; //int x,int *y;

int v[10],*pv; //int v[10];int *pv;

識別符號大命名區分大小寫,因此count和count是兩個不同的名字。

2.2作用域

主要分為幾大部分:區域性作用域:區域性名字的作用域從宣告處開始,到宣告語句所在的塊結束,塊是指一對{}所包圍的**片段。

類作用域:該類中的成員名字和類成員名字,它們的作用域從類宣告的

x =3;

cout << x << endl;

}int x=8;

//全域性變數x

2.3初始化

初始化有四種形式

x a1 ; //推薦使用

x a2 =;

x a3 =v;

x a4(v) ;

空初始化列表{}指定預設值進行初始化

int x4{}; //賦值為0

double d4{}; //賦值為0

char *p{}; //賦值為nullptr

vector v4{}; //賦值為空向量

string s4 {}; //賦值""

初始化器列表

complexz1(1,2);

complexf1();

complexz2;

complexf2{};

auto x1 ; {}列表自動推導為initializer_list.

auto x1 ; {}列表自動推導為initializer_list.

auto x1 ; {}無法自動推導

auto和decltype()報道編譯器已知的一種表達型別。

使用{}可以進行型別強制轉換,或者用auto。

auto v1=123; //int

auto v1 ;

auto v2=『c』; //char

auto v2 ;

auto v3=f(); //適合的型別

auto v3 ;

2.4物件和值

2.5型別別名

typedef int int32_t //等價 using int32_t=int;

typedef short int16_t //等價 using int16_t=short;

typedef void(ptof)(int) //等價 using ptof=void()(int);

定義和宣告

定義 什麼是定義?所謂的定義就是 編譯器 創造乙個物件,為這個物件分配一塊記憶體並給它取上乙個名字,這個名字就是我們常常說的定義名或物件名。但注意,這個名字一旦和這塊記憶體匹配起來 可以想象是這個名字嫁給了這塊空間,沒有要彩禮啊 它們就生死與共,終生不離不棄,並且這塊內 存的位置也不能被改變。乙個變...

C語言定義和宣告區別

1.變數的定義和宣告 c語言定義和宣告分為變數的定義和宣告和函式的定義和宣告。由於,函式是具有全域性外部特性,並且函式的定義和宣告區別是很明顯的。其宣告需要返回值型別,函式名和引數列表。而函式的定義需要函式體。所以,很容易區別函式的宣告和定義。對於變數的宣告和定義,就不是那麼明顯。通常變數定義和宣告...

C語言定義和宣告區別

c語言定義和宣告區別 1.變數的定義和宣告 c語言定義和宣告分為變數的定義和宣告和函式的定義和宣告。由於,函式是具有全域性外部特性,並且函式的定義和宣告區別是很明顯的。其宣告需要返回值型別,函式名和引數列表。而函式的定義需要函式體。所以,很容易區別函式的宣告和定義。對於變數的宣告和定義,就不是那麼明...