C++相談室 part156at TECH
C++相談室 part156 - 暇つぶし2ch101:デフォルトの名無しさん
21/05/28 12:22:24.96 sAi5WsuI.net
>>99
[補足]
C++コンパイラが
int x[N];      // (1)
というテキストをパースする際、コンパイラ内部では、
x --> [N] --> int
という順序の演算が並んでいると理解されている。そして、
int (&a)[N]     // (2)
というテキストをパースする時、優先順位括弧があるために、
(1)において、x を &a に置き換えたようにコンパイラは理解するなので、
数学の式変形での「代入」のように考えて、
&a --> [N] --> int   // (3)
のようになる。そしてさらに、&a は、a --> & のように式変形されるので、
(3) に安全のために優先順位の()を付けてそれを「代入」すると、
(a --> &) --> [N] --> int   // (4)
となる。しかし、この場合、優先順位の括弧ははずせるので、
a --> & --> [N] --> int   // (5)
となる。ここで、もとのテキストが、
int (a&)[N]     // (6)
だったならば、x が a& に相当することになるが、a& という部分式はC++には
存在しないので、そこでエラーになる。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch