4

私が持っているとします:

int a;
int b;

変数ab名前は同等ですか (より具体的には、プリミティブ型には型名がないため、名前が同等と見なすことができますか)?

ありがとう。

4

3 に答える 3

7

a名前 (より正確には名義) の等価性とは、値がその型の (完全修飾) 名によって決定されるのと同じ型を持つことを意味しますb。構造的同等性とは、名前に関係なく、値の型が構造的に同等であるため、値が同じ型であると見なされることを意味します。名前付き型はそれ自体と構造的に同等であるため、名目上の型の同等性は構造型の同等性を意味します。あなたのabは、名前 ("int") で同じ型を持っているため、名目上は同じ型です。「プリミティブ型には型名がない」という主張は単に誤りintです。型名です。int a; int b;int a, b;aそしてb同じ(構造的にも名前的にも)タイプです。

C の型システムは一般に名前によるものです。たとえば、int *andshort*は同じ表現であっても異なる型であり、 andintは常に同じ表現であっても異なる型です。shortstruct foo { int x; }struct bar { int x; }

于 2011-03-17T06:37:49.540 に答える
0

私が見つけたいくつかのクラスノートは、次のことを示しているようです:

int a;
int b;

変数aとは、同等の名前でb はありません。

ただし、次の場合:

int a, b;

変数ab 同名です。

于 2011-03-17T03:33:46.967 に答える