%与FMOD计算模量

我的控制台应用程序看起来像

#include "stdafx.h" #include <iostream> #include <cmath> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int a, b; cin>>a>>b; cout<<"% "<<a%b<<endl<<"fmod "<<fmod(a,b)<<endl; system("pause"); return 0; } 

我是C + +的新手,我有两个问题:

  1. 在VS上编写这个应用程序 为什么我需要包含“stdafx.h”? 有什么要求吗? 这是什么?
  2. fmod%有没有区别? 得到完全相同的结果:

在这里输入图像说明

Thx提前

在VS上编写这个应用程序 为什么我需要包含“stdafx.h”? 有什么要求吗? 这是什么?

因为默认的项目设置说你需要预编译的头文件(见这个 )。

您可以手动禁用。 选择不使用预编译头文件 ,如下图所示:

在这里输入图像说明


fmod和%有没有区别? 得到完全相同的结果:

是。 %不能在浮点数字上运行,而fmod可以。 fmod f表示浮点。

尝试这个:

 float a, b; std::cin>>a>>b; std::cout << (a%b) << std::endl; //it will give compilation error. 

当传递参数时,fmod(a,b)将转换int变量a和b以浮动。 取决于a和b的类型(例如,如果使用std :: uint64_t),在转换过程中可能会失去精度,并返回错误。 返回类型也将是一个浮点数,如果您使用int类型的函数,则需要再次进行转换。 你应该坚持%为int类型。 使用fmod效率较低。