C C ,判斷變數的型別

2021-10-09 21:39:56 字數 2774 閱讀 4537

python用久了,c/c++也就慢慢還給老師了!

在python中,利用type()函式,可以很方便的判斷變數型別。但是在c/c++中,判斷變數型別,卻不簡單…

c++中,可以利用typeid()來判斷變數型別。

第一步:建立test.cpp檔案,輸入以下**:

#include#includeusing namespace std;

int main()

第二步:利用g++編譯test.cpp,生成可執行檔案(預設為a.out):

[root@程式設計師的一天 c++]# ls

test.cpp

[root@程式設計師的一天 c++]# g++ test.cpp

[root@程式設計師的一天 c++]# ls

a.out test.cpp

[root@程式設計師的一天 c++]#

第三步:執行a.out

[root@程式設計師的一天 c++]# ./a.out 

i[root@程式設計師的一天 c++]#

tip:i表示int,即型別首字母。

c語言中,沒有判斷變數型別的函式

可能因為c語言每種型別占用空間都很明確,大概不需要這樣的功能吧。

如果確實需要判斷,也有方法可行。方法比較雞肋

可以簡單利用sizeof()或者ascii輔助判斷

2.1、sizeof()判斷

表示式sizeof()可以得到物件或型別的儲存位元組大小,但是不同作業系統可能存在差異

我們來簡單測試一下int型別和char型別的1分別佔位多少。

第一步:建立test.c檔案,並輸入以下**:

#includeint main()
第二步:利用gcc編譯test.c檔案(預設生成a.out檔案):

[root@程式設計師的一天 c]# ls

test.c

[root@程式設計師的一天 c]# gcc test.c

[root@程式設計師的一天 c]# ls

a.out test.c

[root@程式設計師的一天 c]#

第三步:執行a.out

[root@程式設計師的一天 c]# ./a.out 

int型別1佔位:4

char型別1佔位:1

[root@程式設計師的一天 c]#

可以看到int型別變數佔4個位元組,char型別變數佔1位元組,從而判斷出是int還是char

tip:如果是個char型別的字母a,還可以進一步利用型別轉換來判斷。數字字元可以強制轉換為int等,字母字元轉換會報錯。

2.2、ascii碼判斷

利用ascii碼,也可以簡單判斷型別。

比如字元型別1輸出ascii碼為49int型別1,則直接輸出1

簡單測試如下:

第一步:建立test.c檔案,並輸入以下**:

#includeint main()
第二步:利用gcc編譯test.c檔案(預設生成a.out檔案):

[root@程式設計師的一天 c]# ls

test.c

[root@程式設計師的一天 c]# gcc test.c

[root@程式設計師的一天 c]# ls

a.out test.c

[root@程式設計師的一天 c]#

第三步:執行a.out

[root@程式設計師的一天 c]# ./a.out 

int型別輸出:1

char型別輸出ascii碼:49

[root@程式設計師的一天 c]#

tip:字元才有ascii碼,int型別數字會直接輸出數字本身。

到此,c/c++,判斷變數的型別介紹完畢!

end.

每乙個關注點讚,都是極大的支援和鼓勵。最後,非常感謝閱讀。

Python 判斷變數型別

資訊來自於如下 使用python判斷變數型別時候要使用 isinstance 函式而非 type 函式進行判斷 比如 a 111 isinstance a,int trueisinstance 和 type的區別在於 class a pass class b a pass isinstance a ...

如何判斷變數型別

在js中如何判斷變數的型別屬於基礎知識,很多時候我們會忽略。畢竟上手 的時候可以現查。無論如何演變,我想基本功還是很重要的,熟練掌握總是百利而無一害。1 首先第一種就是我們常用的typeof 它會將型別資訊當作字串返回。如下 console.log typeof undefined undefine...

php判斷變數型別

其中gettype 函式返回變數的型別,如 boolean integer double float型別會返回 double 而非 float string array object resource null 和 unknown type 等值,表明變數型別 標量變數是指那些包含了 integer...