1. ホーム
  2. c++

[解決済み] 2つの型を持つ変数を宣言する。"int char"

2023-06-24 11:47:32

質問

私はC++の初心者です。 Bjarne StroustrupのProgramming: C++を用いた原理と実践 .

のセクションで 3.9.2 安全でない変換 で、著者は次のように言及しています。

イニシャライザが整数リテラルである場合、コンパイラは実際の値をチェックし、狭窄を意味しない値を受け入れることができます。

int char b1 {1000};     // error: narrowing (assuming 8-bit chars)

私はこの宣言に困惑しています。これは2つの型( intchar ). このような宣言は、これまでJavaとSwift(私が比較的慣れている2つの言語)では見たことがありません。これはタイプミスなのか、それとも有効なC++の構文なのでしょうか?

どのように解決するのですか?

本の中の間違いです。それは、想定される狭義の変換がなくても、有効なC++宣言ではありません。

のどの誤植にも書かれていません。 Bjarne Stroustrup のページ (第4刷以前)の誤植には書かれていないのが不思議です。十分明らかなミスなのですが。とコメントされているので、想像するに //error とコメントされているので、宣言自体の間違いに気づく人は少ないのでは?