int get_dnum(long long ccn,int di){
long long x=1;
for(int y=1;y<di;y++){
x=x*(long long)10;
}
return ccn%x;
x长很长.10长很长。这个错误怎么发生?
答案 0 :(得分:0)
long long
(默认签名)应该是(至少)64位长度,这意味着最大可表示的数字是(至少)+9,223,372,036,854,775,807(即2 ^ 63-1) 。您指定的数字1,111,111,111,111,111,111小于9,223,372,036,854,775,807,因此符合签名long long
。但是,您的数字乘以10会超过64位签名long long
的最大值。如果声明x为unsigned long long
类型,则指定的乘法应该有效。
祝你好运。