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




