[問題] 關於用指標作運算的疑問

看板C_and_CPP作者 ( )時間12年前 (2013/04/17 23:45), 編輯推噓1(106)
留言7則, 3人參與, 最新討論串1/1
看到程式碼如下 #include<stdio.h> #include<stdlib.h> 1 int main(void) 2 { 3 unsigned char x=1; 4 unsigned long y=3; 5 6 for (;;){ 7 printf("y = %d\n", y ); 8 9 *( (unsigned char*)(&y)+1 )= *( (unsigned char*)(&y)+1 )+x; 10 11 system("pause"); 12 } 13 system("pause"); 14 return 0; 15 } 這程式第9行 可看成 y=y+x*256; 但不曉得為什麼可以這樣子用? 板上大大們可否幫小弟解惑一下 感激不盡 -- CPU (中央處理器):Intel Core i5-430M RAM (記憶體):DDR III 2GB*1 VGA (顯示卡):ATI Radeon HD5470 with 1GB DDR3 VRAM HDD (硬碟):SATA 500GB LCD (螢幕尺寸):15.6"HD 1366 ×768 (Glare Type) WLAN (無線網路):802.11 b/g/n My MSI CX620... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 119.77.206.54

04/18 00:47, , 1F
這是用指標直接指定值,要把這題用16進制看就較清楚
04/18 00:47, 1F

04/18 00:48, , 2F
這完全只是炫技而已
04/18 00:48, 2F

04/18 02:00, , 3F
其實就是直接把x加到y的第二個byte
04/18 02:00, 3F

04/18 02:01, , 4F
但是因為是當作unsigned char來運算, 所以很快就會
04/18 02:01, 4F

04/18 02:03, , 5F
overflow, 你試試看就知道, 大概是65535附近
04/18 02:03, 5F

04/18 02:15, , 6F
感謝樓上兩位大大
04/18 02:15, 6F

04/18 14:33, , 7F
那個跟unsigned char 無關,他是放到long
04/18 14:33, 7F
文章代碼(AID): #1HRiERH8 (C_and_CPP)