簡體   English   中英

縮小從 char 到 double 的轉換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM