我正在與海灣合作委員會v4.4.5,我notived缺省整數推廣計劃,我沒有預料到。海灣合作委員會,奇怪的整數推廣計劃
要激活足夠的警告來防止隱含的錯誤我激活了選項-WConversion,從那時起我注意到,當我執行下面的代碼時,警告「從'int'轉換爲'short int'可能會改變它值「存在。
signed short sA, sB=1, sC=2;
sA = sB + sC;
這意味着「SB + SC」被提升爲INT,然後分配給SA這是簽署短。 要解決這個警告,我必須像這樣施放它。
signed short sA, sB=1, sC=2;
sA = (signed short)(sB + sC);
此警告也出現在下面的代碼中。
signed short sA=2;
sA += 5;
而且可以通過刪除操作+ =這個固定...
sA = (signed short)(sA + 1);
這是一個有點討厭,因爲我不能使用運營商+ =,- =。
我希望GCC根據操作數選擇正確的整數提升。我的意思是,SA = SB +的sC和SA + = 5不應該被晉升爲INT因爲他們都是簽訂短期。
據我所知,在默認情況下推進到INT防止溢出的錯誤,但它是一個有點惱人,因爲我要投我的大部分代碼或改變我的變量INT。
我可以使用GCC選項來呈現此整數提升方案嗎?
感謝您的幫助。
我沒有解決方案,但是你總是可以用'short'而不是'signed short'來完成,這可能會讓這個問題稍微有些討厭。我承認它仍然很煩人。 –