推 LaPass:我直覺上也覺得是這樣,還是說c中的字串也是unicode? 10/05 09:47
→ p52189:C預設應該是ASCII 應該XD 10/05 09:56
我找到答案了
但不確定我的理解是不是正確
因為指令叢集使用的字組( word )大小是固定的
所以不論是 C 使用 ASCII 編碼,或 JAVA 使用 Unicode
都會佔去固定記憶體空間( 32 或 64 位元)
推 PsMonkey:囧... 那處理中文字咧... 這比較基礎好怪異 XD 10/05 11:33
→ p52189:我不知道@@ 中文字有什麼問題嗎? 10/05 11:35
第二道問題
哪一種可容納1,000,000,000(十進制)的變數型態佔用最多記憶體空間
1. C 中的 int
2. C 中的 String
3. Java 中的 String
這個題目講的容納,應該是把數字當成字串來存的意思
就是 "1000000000" 這樣
1 肯定最小
問題在於 2 跟 3,為什麼 3 最大呢?
3 比 2 多出什麼@@?
→ qrtt1:什麼書那麼多詭異的問題。 10/05 12:44
推 PsMonkey:第一題跟第二題是一樣的吧? 10/05 13:42
→ p52189:蛤一樣嗎@@!? 能不能詳細一點解釋 我很弱 囧 10/05 14:01
→ Chikei:第一題...看C用啥編碼而定,所以是錯 10/05 14:36
→ Chikei:第二題,Java是用UTF-16,所以會比C string大(如果是ASCII 10/05 14:37
→ Chikei:要分清楚Unicode跟encoding implementing Unicode是不同的 10/05 14:43
感謝!
第一題我一開始認為是編碼的緣故
但在書上看到這一段 整段節錄給大家看一下
「MIPS 軟體會嚐試將堆疊對齊在字組位址上,以便程式可以單單使用 lw 和 sw (兩
者均對齊字組位址)來存取堆疊。這種慣例表示一個配置在堆疊上的字母符號即使
不需要也會佔用掉 4 個位元組。然而 C 的串變數或位元組的數列會將 4 個位元
組組成一個字組,而 Java 的短整數型態 ( short ) 的串變數或數列會將兩個半
字組組成一個字組。 」
我看完之後作了上面寫到的那些理解
請問我誤會了什麼嗎? ( 錯很大的話請不要笑我..Orz )
※ 編輯: p52189 來自: 114.42.232.67 (10/05 15:22)
→ Chikei:串變數 <- 這到底是三小,怎麼看都不是字串。 10/05 16:30
→ p52189:我照抄的 書上就這樣寫 囧 10/05 16:34
推 LaPass:那是大陸翻譯還是純粹漏字? 10/05 16:37
→ p52189:是字串無誤 我去徵到原文了XD 10/05 18:31