名稱等價問題
回答
名稱(更恰當,標稱)等價意味着這些值具有與其類型的(完全限定)名稱所確定的相同類型 - 例如,a
和b
名義上是類型等效的,因爲它們都具有「int 「類型。結構等價意味着這些值被認爲具有相同的類型,因爲它們的類型在結構上是等同的,而不管名稱如何。名義類型等價意味着結構類型等價,因爲命名類型在結構上與自身等價。您的a
和b
名義上類型相同,因爲它們的名稱(「int」)具有相同的類型。聲稱「原始類型沒有類型名稱」僅僅是錯誤的 - int
是一個類型名稱。並且int a; int b;
和int a, b;
之間沒有區別 - 它們都定義了a
和b
,它們具有相同(結構和名稱)類型。
C'S型系統通常是名...例如,int *
和short*
是不同的類型,即使int
和short
具有相同的表示,並struct foo { int x; }
和struct bar { int x; }
是不同的類型,即使他們總是有相同的表示。
我會接受這個,並假定教授是錯的。過去的課堂測試答案表明你是對的。 – 2011-03-18 04:03:22
我發現了一些課堂筆記似乎表明有:
int a;
int b;
變量a
和b
不名等同。
然而,隨着:
int a, b;
變量a
和b
是名等同。
無論是這些課堂筆記還是你對它們的解釋都是錯誤的 - 從這樣的區分中可能會有什麼感覺或價值?在這兩種情況下,'了'和'B'具有相同的類型(即「INT」),所以他們當然是同等類型,以及排序類型等價的是名稱相同 - C中視爲了''和'B'的相同的類型,因此它們之間的操作不需要強制轉換或促銷,這正是因爲它們具有相同類型的名稱 - 「int」。 OTOH如果其中一個被宣佈爲「短」,即使「int」和「short」是相同的大小,他們也會有不同的類型。 – 2011-03-17 06:54:27
我不認爲C採用名稱等價。恕我直言,C採用結構等同,結構和工會例外;爲他們使用名字。確實,這些值的名稱與其姓名相同時的名稱具有相同的類型,並且這些值被認爲具有與結構等同的結構等同所確定的類型相同的類型。但即使在結構上相同的情況下,不管名稱如何,都不能確定。
基本上,編程語言中的原子類型具有名稱,它們在名稱等價和結構等價中都使用。差異來自派生類型,例如int *
或char[10]
。確實「原始類型有類型名稱」。並且C的類型系統將派生類型的結構與用戶定義的名稱(不包括類型同義詞)進行比較,即使它們是由用戶使用typedef
定義的。
C的類型系統通常通過結構...例如,int *
和short *
是不同的類型,但是int *
和int *
是相同的類型。struct foo { int x; }
和struct bar { int x; }
是不同類型的原因是因爲它們具有不同的結構,直到用戶定義的類型名稱。類型struct foo *
和struct foo *
是相同的類型,因爲它們處於相同的結構中。請不要混淆,struct
是針對類型的結構。這僅僅是定義在C
簡單地說,在strutural等價的類型展開了對原子類型名稱類型名稱,更確切的結構變量的名字和他們相比。在C中,類型展開爲用戶定義的名稱。 (展開請參考http://www.csd.uwo.ca/~moreno//CS447/Lectures/TypeChecking.html/node3.html)這是區別。當然,名稱相同的類型在結構上是等效的,但不是相反的。
對於下面的情況:
int x;
int y;
x
和y
和名稱等效和結構等效兩者。但是,在以下情況:
int *x;
int *y;
x
和y
是結構性等價的,但不能命名等同。即使是以下情況:
int *x, *y;
x
和y
不被視爲等同於嚴格的名字等價方案,該聲明被認爲只是一個先前聲明的簡寫。 Ada是採用嚴格名稱對等的着名語言。
- 1. 結構等同vs名稱等價
- 2. ASP.NET MVC中的等價名稱空間?
- 3. 按價值和按名稱等值
- 4. 等價實現NHibernate實體,unproxy問題
- 5. Pthreads問題;改變價值等
- 6. PNRP名稱解析問題
- 7. Upcase包名稱問題
- 8. XLib窗口名稱問題
- 9. VHDL索引名稱問題
- 10. Vb.net combobx名稱問題
- 11. C#LPT名稱問題
- 12. struts2命名空間名稱問題
- 13. 命名等價與等價結構之間的區別?
- 14. 如果名稱存在保存爲名稱(1)名稱(2)等
- 15. Silex路由問題 - 刪除頁面名稱和目錄名稱
- 16. 問題與類或名稱空間的名稱
- 17. 劍道numerictextbox - 問題與名稱
- 18. MFC功能區面板名稱問題
- 19. 問題部分視圖名稱
- 20. svnkit:獲取條目名稱的問題
- 21. 模板類型名稱問題
- 22. 枚舉句柄名稱問題
- 23. asp.net-mvc3 EditorFor模板名稱問題
- 24. 綁定控件名稱問題
- 25. solr問題獲取字段名稱
- 26. 這個問題的名稱是什麼?
- 27. 動態iframe IE名稱問題
- 28. 應用程序名稱問題
- 29. FFMPEG輸出幀名稱問題
- 30. PHP名稱間距問題延伸
什麼語言你在說什麼? – 2011-03-17 03:12:55
我說的是C.我只是增加了對C標記爲你:) – 2011-03-17 03:19:44
你的問題沒有任何意義... – Nix 2011-03-17 03:28:09