0
我總是看到有人寫for(int ii = 0; ii < 50; ii ++)
爲(INT II或(II字符用C?
但對於數< 256,爲什麼沒有人寫char ii
,而不是int ii
因爲它肯定,這將是8位而不是更多?
我總是看到有人寫for(int ii = 0; ii < 50; ii ++)
爲(INT II或(II字符用C?
但對於數< 256,爲什麼沒有人寫char ii
,而不是int ii
因爲它肯定,這將是8位而不是更多?
C將所有小於int的值的算術運算轉換爲int值,並且編譯器可能會將ii放入寄存器中,所以選擇較小的類型將不會贏得任何東西。可能由於不斷轉換回(char)而變得更糟。
接下來,你有一個問題:char只能保證上升到127,所以255會超出範圍。你將不得不去unsigned char。
這並不意味着在您的示例循環中。對於這個,編譯後最有可能沒有區別。
你真的在意嗎? – gongzhitaao
'50'是一個'int'(所以是'0');如果您使用'char'作爲控制變量,那麼您將強制編譯器在每次比較時執行額外的轉換(當然,編譯器可以優化轉換)。 – pmg
*因爲它肯定會是8位而不是更多*這是錯誤的。 'char'不一定是8位,即使它是,也不能保證能夠保持255位,因爲實現可能使用普通符號字符。例如,'for(char ii = 0; ii <255; ii ++)'是危險的,只能在具有無符號字符的平臺上按預期工作。 –