You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

C++编译错误求助:long long与重载函数类型无法执行+运算符

解决你的C++编译错误问题

嘿,我一眼就揪出导致这个编译错误的问题啦!

错误根源

你遇到的Invalid operands of types long long int and unresolved overloaded function type to binary operator+错误,核心原因是代码里的remainder根本不是你定义的变量

因为你包含了<bits/stdc++.h>这个万能头文件,它会引入C++标准库的几乎所有内容,其中恰好有一个std::remainder函数。编译器把你写的remainder当成了这个标准库函数,而不是你误以为的自定义变量。这就导致你试图把long long类型的数值和一个函数类型做加法——这显然是不合法的操作,所以触发了编译错误。

再看你的代码逻辑,循环判断条件里用的是(m*p + ans) % inv == 0,所以这里你肯定是想写ans而不是remainder,毕竟ans是你之前明确定义好的变量。

修正后的代码

#include <bits/stdc++.h>
using namespace std;
int main(){
    long long m = 100006L;
    long long ans = 243343435L;
    long long inv = 123455677L;
    long long x = 0L;
    bool success = false; // 顺便修正了拼写错误:succcess → success
    for(long long p = 1L; p<10000000;p++){
        if((m*p + ans) % inv == 0 ){
            success = true;
            x = ((m*p) + ans) / inv; // 把remainder替换成ans
            break;
        }
    }
    return 0;
}

额外小建议

  • 尽量别用<bits/stdc++.h>这种万能头文件,它会引入大量不必要的标准库内容,既增加编译时间,还容易出现这种名字冲突的问题。可以根据实际需求引入具体头文件(比如<iostream><algorithm>等)。
  • 注意变量名拼写,比如你原来的succcess多了一个c,虽然不影响编译,但会降低代码可读性,建议养成写完代码快速检查的小习惯。

内容的提问来源于stack exchange,提问作者user3243499

火山引擎 最新活动