[問題] 關於define

看板C_and_CPP (C/C++)作者 (好時光)時間15年前 (2011/04/12 11:19), 編輯推噓0(009)
留言9則, 6人參與, 最新討論串1/1
問題:定義一組密碼(四個數字),使用者有三次輸入的機會, 輸入錯誤會從螢幕印出錯誤訊息 程式碼: #include<stdio.h> #define code 0608 int main(void){ int flag=0; int password; printf("%d\n",code); do { printf("輸入一組密碼(四位數)\n"); scanf("%d",&password); if(flag==3){ printf("超過%d次,您已被鎖卡\n",flag); return 0 ; } else if(password==code){ printf("登錄成功\n"); printf("%d\n",code); } flag=flag+1; }while(password!=code); return 0; } 為何define出現了 illegal digit '8' for base '8' 的訊息 那要怎麼修正呢? 將其宣告為字串型態嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.101.8.91

04/12 11:20, , 1F
0開頭的會被當作8進位
04/12 11:20, 1F

04/12 11:23, , 2F
改成 #define code 608 就可以了
04/12 11:23, 2F

04/12 11:52, , 3F
那如果要以0 開頭呢
04/12 11:52, 3F

04/12 11:54, , 4F
當字串
04/12 11:54, 4F

04/12 12:02, , 5F
誰教你巨集常數要用小寫? = ="
04/12 12:02, 5F

04/12 12:47, , 6F
巨集請用**大寫**!!
04/12 12:47, 6F

04/12 13:19, , 7F
0開頭表示八進制,所以你的表示完全不合理!因8進不能有
04/12 13:19, 7F

04/12 13:20, , 8F
8, printf("%d\n", 12); 結果會是 10.所以不用前導0
04/12 13:20, 8F

04/12 13:20, , 9F
修樓上,是 printf("%d",012); 結果是10
04/12 13:20, 9F
文章代碼(AID): #1DeyJV15 (C_and_CPP)
文章代碼(AID): #1DeyJV15 (C_and_CPP)