C語言中強型別 弱型別

2021-08-09 15:45:05 字數 490 閱讀 9222

強型別:以初始化的全域性資料;

弱型別:未初始化的全域性資料;

main.c

#includeshort x = 10;

short y = 10;

void func();

int main()

test.c

int x ;

void func()

上邊列印出的結果為x=20,y=0。為什麼呢?

乙個工程中有多個檔案,編譯時分開編譯。test.c編譯時x訪問的是當前檔案的x,把20寫到x的記憶體上,4位元組大小。

main.c中的x為強符號,test.c中的x為弱符號,選強符號。鏈結時選強符號的x,但是編譯時已經定好4位元組大小。把20寫到x記憶體上時,小端模式0x14000000,main.c中x、y都為short型別,也就是x是1400 ,y是0000。所以列印出來x=20,y=0。

弱型別 強型別 動態 靜態語言的區別

舉個例子 var a 5 var b 5 sumresult a b minresult a b 輸入sumresult的答案不是10,而是55,再次是將a的型別轉化為了字串,然後進行拼接。輸入minresult的答案是0,是將b的型別轉化為了數字,然後進行減法。強型別語言和弱型別語言區別 無論是強...

強型別,弱型別,靜態型別,動態型別的區別

型別系統的一些概念,眾說紛紜,使用上也比較亂。有些東西,甚至不好嚴格定義。以下算學術界的一種相對 嚴格 的說法。首先了解一下基本概念 有了上面的概念,再討論強 弱型別,靜態 動態型別 偏向於不容忍隱式型別轉換,弱型別相對于強型別來說型別檢查更不嚴格,比如說允許變數型別的隱式轉換,允許強制型別轉換等等...

強型別與弱型別,靜態型別和動態型別

首先強弱是相對的。強型別 每個變數和物件都必須宣告型別,在編譯時確定好型別了,執行時不能更改。偏向於不容忍隱式型別轉換。譬如說haskell的int就不能變成double。弱型別 編譯時不確定型別,執行時根據語義確定是哪種型別。通俗地說,弱型別偏向於容忍隱式轉換,把不同型別的變數放在一起運算。靜態型...