类型 'long long int' 到二进制 'operator%' 的无效操作数
Invalid operand of types 'long long int' to binary 'operator%'
我在使用 C++,但出现此错误:
bool comprovarCodi(long long num, int DC){
bool codi_correcte;
int i=0, suma_senars=0, suma_parells=0, suma_total=0, desena_superior, DC_calculat, cont=0;
while(num!=0){
num=num/10;
cont++;
i++;
}
if(cont==12){
for(int j=1; j<12; j=j+2){
suma_senars=suma_senars+num%pow(10,j);
我不知道为什么,我相信 "num" 是一个整数,所以我可以使用运算符“%”。
有人知道为什么会失败吗?
谢谢
你必须先转换为 int
suma_senars = suma_senars + num % (int)pow(10,j);
更好的:
suma_senars += num % (int)pow(10,j);
更清楚:
suma_senars += num % ( (int)pow(10,j) );
不要对这种事情使用 pow
。
long long pow_ten = 10;
for(int j=1; j<12; j=j+2)
{
suma_senars=suma_senars+num%pow_ten;
pow_ten *= 100;
}
这不仅会更快,而且会正确计算,而不是 pow
可能会使用 exp(log(x) * y)
之类的东西来计算 x ** y
- 因此并不总是会出现恰好是您想要的数字 - 特别是如果您将其转换回整数。
我在使用 C++,但出现此错误:
bool comprovarCodi(long long num, int DC){
bool codi_correcte;
int i=0, suma_senars=0, suma_parells=0, suma_total=0, desena_superior, DC_calculat, cont=0;
while(num!=0){
num=num/10;
cont++;
i++;
}
if(cont==12){
for(int j=1; j<12; j=j+2){
suma_senars=suma_senars+num%pow(10,j);
我不知道为什么,我相信 "num" 是一个整数,所以我可以使用运算符“%”。
有人知道为什么会失败吗?
谢谢
你必须先转换为 int
suma_senars = suma_senars + num % (int)pow(10,j);
更好的:
suma_senars += num % (int)pow(10,j);
更清楚:
suma_senars += num % ( (int)pow(10,j) );
不要对这种事情使用 pow
。
long long pow_ten = 10;
for(int j=1; j<12; j=j+2)
{
suma_senars=suma_senars+num%pow_ten;
pow_ten *= 100;
}
这不仅会更快,而且会正确计算,而不是 pow
可能会使用 exp(log(x) * y)
之类的东西来计算 x ** y
- 因此并不总是会出现恰好是您想要的数字 - 特别是如果您将其转换回整数。