看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux C 問題(Question): 自己已經把問題結決 但是還是不懂 原本的為何邏輯是錯的 程式碼(Code):(請善用置底文網頁, 記得排版) struct Tran_GPS { char time[24]; //int id; }; int main() { struct Tran_GPS tran1; strcpy(tran1.time, "2012/05/15-13:27:30.791"); //tran1.time[18]存的是 0 int totalmsecond=(int)(tran1.time[18]); printf("%d\n",totalmsecond); } 預期想要printf出來的是0 但 最後出來的是48 char *c=&tran1.time[18]; int totalmsecond=atoi(c); printf("%d\n",totalmsecond); 後來改成上面程式碼 才是出來0 後面改的程式碼 我知道原理 但問題是不太懂為啥 我最開始的打法是錯的? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.164.79
hichcock:字元 '0' = int 的 ? 06/29 11:26
willy01:想要請問這樣不能用強制轉型 (tupe) 嗎?? 06/29 11:35
LPH66:因為 '0' 對電腦來說就真的是數字 48.... 06/29 11:38
LPH66:就算轉型也只是把 char 的 48 變成 int 的 48 而已 06/29 11:38
willy01:int s=time[18] - '0'; 06/29 11:51
willy01:要向上面那樣? 我大概知道哩 謝謝大家幫助 06/29 11:51
wes123:是想要使用printf("%c\n", totalmsecond);嗎? 06/29 22:18
milen:原本那樣子轉出來的是ASCII碼吧 07/02 13:01