簡體   English   中英

一個新手gcc編譯器和c語言問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM