在没有包含cmath的情况下vc是怎么理解abs这个函数的?
#include<iostream>
#include<fstream>
#include<sstream>
#include<vector>
#include<cmath> //如果删除这一行的话,程序可以编译运行,但是运行结果不对。
using namespace std;
typedef vector<vector<double> > mat;
double check();
mat input();
int main(){
mat a;
a=input();
double b=check();
cout.precision(3);
for(int i=0;i<a.size();i++){
if(abs(a[i][0]*a[i][1]-b)<1e-2)
cout<<fixed<<a[i][0]<<" "<<a[i][1]<<endl;
}
cout<<"b="<<b;
system("pause");
}
mat input(){
ifstream in("abc.txt");
mat a;
for(string s;getline(in,s);){
vector<double>b;
istringstream sin(s);
for(double m;sin>>m;)
b.push_back(m);
a.push_back(b);
}
return a;
}
double check(){
double m=1.0;
for(int i=1;i<=16;i++)
m=m*i;
return m;
}
程序运行结果是从abc.txt文件中的找出积等于16的阶乘的数对,但是如果删除标注的那行,程序也可以编译运行,却没有起到筛选的作用,直接把abc.txt里的数对都直接输出了,这里不是用“#inclue<cmath>“编译器是怎么理解abs这个函数的呢?
#include<fstream>
#include<sstream>
#include<vector>
#include<cmath> //如果删除这一行的话,程序可以编译运行,但是运行结果不对。
using namespace std;
typedef vector<vector<double> > mat;
double check();
mat input();
int main(){
mat a;
a=input();
double b=check();
cout.precision(3);
for(int i=0;i<a.size();i++){
if(abs(a[i][0]*a[i][1]-b)<1e-2)
cout<<fixed<<a[i][0]<<" "<<a[i][1]<<endl;
}
cout<<"b="<<b;
system("pause");
}
mat input(){
ifstream in("abc.txt");
mat a;
for(string s;getline(in,s);){
vector<double>b;
istringstream sin(s);
for(double m;sin>>m;)
b.push_back(m);
a.push_back(b);
}
return a;
}
double check(){
double m=1.0;
for(int i=1;i<=16;i++)
m=m*i;
return m;
}