首頁  >  文章  >  後端開發  >  為什麼 `func(\"one\")` 會導致 C 隱式轉換出錯?

為什麼 `func(\"one\")` 會導致 C 隱式轉換出錯?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-01 05:36:02380瀏覽

Why does `func(

C 隱式轉換

在 C 上下文中,隱式轉換的概念一直是討論的主題。最近關於「C 中還可以使用哪些其他有用的轉換?」的回答提出了關於正確理解 C 中轉換的問題。

考慮以下程式碼片段:

在此片段中,第一個函數呼叫 func("one") 的結果是一個錯誤。這是因為沒有從 const char * 到 A 的直接轉換。雖然存在從字串到 A 的轉換,但使用它會涉及多次隱式轉換,根據 C 標準,這是不允許的。

C 標準(SC22-N-4411.pdf) 在12.3.4 節「轉換」中指出:

這表示在執行轉換時只能套用一個隱式用戶定義的轉換。在第一個函數呼叫中,從 const char * 到 string 的轉換以及從 string 到 A 的轉換都是使用者定義的轉換。由於需要多次轉換,編譯器會引發錯誤。

以上是為什麼 `func(\"one\")` 會導致 C 隱式轉換出錯?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn