Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在一步中得到商和余数?_C++_C_Modulo_Integer Division - Fatal编程技术网

C++ 如何在一步中得到商和余数?

C++ 如何在一步中得到商和余数?,c++,c,modulo,integer-division,C++,C,Modulo,Integer Division,可能重复: 是否可以在一个步骤中获得整数除法的商和余数,即不执行两次整数除法?是的,有一个名为(和ldiv,甚至可能lldiv)的标准函数可以做到这一点。div将完成此操作。参见和示例: /* div example */ #include <stdio.h> #include <stdlib.h> int main () { div_t divresult; divresult = div (38,5); printf ("38 div 5 =>

可能重复:


是否可以在一个步骤中获得整数除法的商和余数,即不执行两次整数除法?

是的,有一个名为(和
ldiv
,甚至可能
lldiv
)的标准函数可以做到这一点。

div
将完成此操作。参见和示例:

/* div example */
#include <stdio.h>
#include <stdlib.h>

int main ()
{
  div_t divresult;
  divresult = div (38,5);
  printf ("38 div 5 => %d, remainder %d.\n", divresult.quot, divresult.rem);
  return 0;
}
编辑:

C规范规定:

7.20一般公用事业
。。。但是它没有说div\t的定义是什么。

你是说除法的“结果”吗?它被称为“商”。好吧,假设我称为“25%10”,结果是5,因为2x10=20,5是余数,我想得到的是模运算中的2,可能吗?一些CPU和一些语言有这种能力,例如,大多数编译器(应该)优化类似
int c=a%b;int d=a/b
合并到一个操作中(例如,x86上的
div
,它返回两个操作)。您所说的单步是什么意思?您是否正在寻找要调用的单个函数?您正在寻找生成单个汇编指令的程序吗?你在寻找生成需要一定时钟周期才能执行的程序集的东西吗?@ddriver:是的,但是请看我的编辑。是的,非常感谢你提供的详细响应fyi-这个函数只进行除法和模运算,所以你什么也得不到。实际上,您所获得的是函数调用开销。@Mikesteninter:这取决于您的体系结构-例如glibc有一个
38 div 5 => 7, remainder 3.
The types declared are size_t and wchar_t (both described in 7.17),
div_t
which is a structure type that is the type of the value returned by the div function,
ldiv_t
which is a structure type that is the type of the value returned by the ldiv function, and
lldiv_t
which is a structure type that is the type of the value returned by the lldiv function.