回覆列表
  • 1 # 使用者6471555682308

    C語言是一種弱型別語言,如果使用熟練了你就會知道,型別什麼的都是浮雲,記憶體才是王道,考慮問題的時候要深入本質才行,關於這個問題從記憶體來看,如下: 1.char是字元型,記憶體中佔用1個位元組,取值範圍是-128到127,int型別佔用4個位元組,範圍就不說了,肯定是比char要大的多,這兩個都是有符號數。 2.char和int一般情況下是可以直接做加減運算的,你可以直接把char當成一個int,只不過取值範圍小點; 3.不同型別的數值在做運算時,以儘量不丟失有效資料為原則,比如char和int相加,系統會自動把char轉換成int,最終結果也是int型; 4.賦值時如果型別不一樣,要小心,若等號左邊的型別小於右邊的,會產生截斷賦值(特別注意),大於的話就沒問題,不會丟失有效資料。 5.如你寫的第一句,A-B是int,C是char,比較時會先把char轉換成int,也就是從1個位元組變成4個位元組,肯定不會丟失有效資料,沒問題; 6.第二句,A+B是int,要賦值給char型C,相當於把4個位元組的資訊裝到1個位元組的記憶體中,這肯定放不下,因此會產生截斷賦值,取A+B結果的最後一個位元組賦值,前面三個位元組則會丟掉, 所以這些寫會有風險(當然編譯肯定是過的,只是警告罷了),這種情況下,如果A+B結果沒超過char取值範圍,也問題,因為不會丟失有效資料,如果超過了的話,結果就不是它應該有的結果了,這是就要小心了,所以一般別這麼寫,除非你確定資料不會越界,一旦越界就會截斷賦值(只是結果不對,但程式也不會崩潰的)。

  • 中秋節和大豐收的關聯?
  • 哪個品牌的嬰幼兒奶粉比較可靠?