二进制'operator%' 'long long int'类型的操作数无效
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"是一个整数,所以我可以使用运算符"%"。
有人知道它为什么会失败?
感谢
不要将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
,因此并不总是能精确地得出你想要的数字,特别是如果你将其转换回整数。
必须先强制转换为intsuma_senars = suma_senars + num % (int)pow(10,j);
更好:suma_senars += num % (int)pow(10,j);
更清晰:suma_senars += num % ( (int)pow(10,j) );
相关文章:
- 如何在 C 中正确使用 libiconv 使其不会报告"Arg list too long"?
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 控制允许动态运行c++的并发操作数
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- <Windows>为什么 std::thread::native_handle 返回类型为"long long unsigned int"的值,而不是 void*(又名 HANDLE)?
- 错误 C2679:二进制"<<":未找到采用类型 'std::string_view' 的右侧操作数的运算符(或者没有可接受的转换)
- C++ 带有向量的 IF 计算操作数
- 是否所有C++运算符都接受操作数?
- 一元*运算符的操作数是否期望一个 prvalue
- 与'operator='不匹配(操作数类型'String'且"void")
- 不正确的操作数类型 MSVC
- C2678 二进制 '==':未找到采用 'Card' 类型左操作数的运算符(或者没有可接受的转换)
- 错误:类型"double()"和"double()"的操作数无效到二进制&quo
- 我的运算符重载是否有效<<(流插入)左操作数不是 ostream
- 没有运算符"="与这些操作数匹配,JUCE 窗口演示应用程序
- 错误:隐式转换更改符号:'int'到'unsigned long'
- 如果我在指针中使用 ++ 操作数,我的值就会出错
- 二进制表达式的操作数无效 - 使用 for 和迭代器
- 二进制'operator%' 'long long int'类型的操作数无效