在gcc中,對小於int
的整數類型加上或減去一個常數會得到一個int
。爲什麼向int8_t添加一個常量會將它提升爲更大的類型?
#include <cstdint>
#include <cstdio>
int main()
{
int8_t wat = 5;
printf("%zd\n", sizeof(wat + 1));
return 0;
}
給我4.使用帶有-Wconversion
簡單+=
語句時注意到這一點。與警告標誌設置,
#include <cstdint>
int main()
{
int8_t wat = 5;
wat += 5;
return 0;
}
給出
wat.cpp:7:6:警告:轉換從 'INT' '{中int8_t又名符號字符}' 可以改變其值[ - Wconversion]
有什麼辦法可以抑制這個警告?爲什麼會發生這種情況?鑄造似乎沒有辦法。
鏘不會在這種情況下發出警告...... –
並非所有的整數都是'int's。 。 – user2864740
不僅僅在GCC中。該標準將其定義爲整體推廣。 – chris