→ sitos:%08x? 11/11 02:11
→ azureblaze:跟promotion無關 這是不同型別的指標加法運算 11/11 02:14
→ azureblaze:還有endian的問題 11/11 02:15
推 loveflames:*(p+1) 吧? 11/11 02:48
※ 編輯: nikeasyanzi 來自: 140.113.136.221 (11/11 14:37)
→ blackwindy:問題很多 先要問sizeof(char) sizeof(int)多大 11/11 15:59
→ blackwindy:然後big還是little endian 11/11 16:00
→ blackwindy:可以宣告個int a給值 拿個char指標指到他 然後印出看看 11/11 16:02
推 Ebergies:(unsigned char) aaa 這東西就 error 了吧 11/11 18:02
→ blackwindy:樓上 並不會 aaa本身是個指標位置 可以這樣轉沒問題 11/12 14:16
→ blackwindy:只是這邊語意上有誤 應該是(unsigned char*)aaa才對 11/12 14:19
→ Feis:sizeof(char)照標準應該是1,此外pointer轉char不能說沒問題 11/12 14:46
→ blackwindy:語意上沒問題啊 你是沒計算過2指標間差值嗎 11/12 15:13
→ blackwindy:打錯 文法上沒問題 11/12 15:13
→ blackwindy:另外標準是1? 哪裡的標準啊? 11/12 15:14
→ Feis:C99 6.5.3.4 規定要是 1, 指標相減跟轉型差很多..... 11/12 15:21
→ Feis:pointer 轉 char 要看實作, 不一定會讓你過 11/12 15:22
→ Feis:不然你有算過指標相加嗎? 11/12 15:22
→ blackwindy:有阿 本篇的p+1不就是嗎 11/12 15:24
→ Feis:那個 1 不是指標吧...... 11/12 15:24
→ blackwindy:另外那是c99標準 不是所有程式都是c99 11/12 15:25
→ Feis:你給的連結就在說 sizeof(char)是1 阿..只是1byte != 8bits 11/12 15:28
→ blackwindy:好吧看起來應該都是1沒錯拉 只是我記得不一定都是8bit 11/12 15:28
→ blackwindy:另外我剛打太快 p+1的1是sizeof(*p)才對 11/12 15:38
→ blackwindy:要算記憶體位置不是應該先轉嗎? 不然怎算? 11/12 15:41
推 yvb:其實 ANSI/ISO C (C89/C90) 也定義 sizeof(char) 是 1; 11/12 18:48
→ yvb:甚至 K&R C 2ed(1988)也同定義; 1ed(1978)則說現有實作都是1. 11/12 18:52
→ nikeasyanzi:感謝EdisonX大 我完全懂了XDXD 大感謝!^^" 11/19 00:49
→ nikeasyanzi:因為前幾位大大在討論的 其實我不大懂 囧 11/19 00:49