[英]a newbie gcc compiler and c language question
當我試圖編譯我的c程序時,它給了我這個錯誤警告:整數常量對於'long'類型來說太大了
這是指這些線
int barcode, a, b, c;
scanf("%d", &barcode);
a = barcode / 1000000000000;
b = barcode / 100000000000 % 10;
c = barcode / 10000000000 % 10;
其余的都很好。 我知道我不應該使用int這么大的數字,對我應該使用什么的任何建議? 如果我用雙倍替換int應該用'%d'部分替換那么?
使用long long而不是int來表示該大小的整數值,使用LL文字后綴:
long long barcode, a, b, c;
scanf("%lld", &barcode);
a = barcode / 1000000000000LL;
b = barcode / 100000000000LL % 10;
c = barcode / 10000000000LL % 10;
您應該用long int替換int,並在常量前面加上L
像這樣:
long long unsigned int barcode;
barcode = 100000000LL;
printf("Barcode is %li", barcode);
將數據類型更改為long
,如此處所示
long barcode, a, b, c; scanf("%ld", &barcode); a = barcode / 1000000000000L; b = barcode / 100000000000L % 10; c = barcode / 10000000000L % 10;
(如果你喜歡答案,也許你可以選擇一個?)
此外,您可以考慮將條形碼放在字符串中。 通過這種方式,您可以更輕松地訪問所需的前3位數字(如果這是您大致想要的 - 注意:您確實希望c是第一個數字后面的前兩位數,對嗎?)
char barcode[14];
int a, b, c;
scanf("%s", &barcode);
a = (int) (barcode[0] - '0');
b = (int) (barcode[1] - '0');
c = b * 10 + (int)(barcode[2] - '0');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.