当我尝试编译我的c程序时,它给了我这个错误警告:整数常量对于'long'类型而言太大了
指的是这些行
int barcode, a, b, c;
scanf("%d", &barcode);
a = barcode / 1000000000000;
b = barcode / 100000000000 % 10;
c = barcode / 10000000000 % 10;
其余的都很好。我知道我不应该使用int这么大的数字,对我应该使用什么的任何建议?如果我用双倍替换int应该用'%d'部分替换那么?
答案 0 :(得分:4)
使用long longs而不是int来表示该大小的整数值,使用LL文字后缀:
long long barcode, a, b, c;
scanf("%lld", &barcode);
a = barcode / 1000000000000LL;
b = barcode / 100000000000LL % 10;
c = barcode / 10000000000LL % 10;
答案 1 :(得分:0)
你应该用long int替换你的int,并用L
作为常量的前缀像这样:
long long unsigned int barcode;
barcode = 100000000LL;
printf("Barcode is %li", barcode);
答案 2 :(得分:0)
将数据类型更改为long
,如此处所示
long barcode, a, b, c; scanf("%ld", &barcode); a = barcode / 1000000000000L; b = barcode / 100000000000L % 10; c = barcode / 10000000000L % 10;
答案 3 :(得分:0)
(如果您喜欢答案,也许您可以选择一个?)
另外,您可以考虑将条形码放在字符串中。通过这种方式,您可以更轻松地访问您需要的前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');