[英]Narrowing conversion from char to double
為什么會有警告
縮小從 char 到 double 的轉換
我已經知道對於 const char 不會有警告。 有很多關於這個的答案。 但我想知道,為什么非常量字符會有“可能縮小”的警告?
在某些系統上,尾數是否可能不足以完美表示字符?
int main() {
char c{7};
double a{c};
}
4:13:警告:在 { } [-Wnarrowing] 中縮小從“char”到“double”的“c”轉換
它正在縮小,因為標准是這樣說的。
7收縮轉換是隱式轉換
[...]
(7.3) —從整數類型或無作用域枚舉類型到浮點類型,除非源是常量表達式並且轉換后的實際值將適合目標類型,並在轉換回原值時產生原始值原始類型 [...]
列表初始化中不允許縮小。 使用顯式轉換(強制轉換)。
double a{static_cast<double>(c)};
是的,理論上允許char
不能完全表示為double
,例如,當兩者都是 32 位類型時。 這是人為的,但標准允許這樣的實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.