是否可以在 C++ 中的单个操作中同时获得除法的模数和商数?

Is it possible to get both the modulus and quotient of division in a single operation in C++?

我听说当处理器执行 / 或 % 时,它会执行相同的操作,但一种方式是 returns 商,另一种方式是余数。

是否可以在一次操作中同时获得两者?也许如果我输入一段汇编代码(我从未做过)?

Is it possible to get both in a single operation?

不,C++ 中没有这样的运算符。标准库中有一个函数可以执行这两个操作:std::div

但这并不重要。无论您在 C++ 中有一个还是两个操作并不意味着 cpu 必须执行那么多操作。半个体面的优化器将能够将两个操作转换为一条指令(假设目标 CPU 可以实现)。

是的,编译器会为您完成。只需使用除法后跟具有相同操作数的余数即可。
https://godbolt.org/z/oK4f4s

void div(int n, int d, int *q, int *r)
{
    *q = n / d;
    *r = n % d;
}

div(int, int, int*, int*):
        mov     eax, edi
        mov     r8, rdx
        cdq
        idiv    esi
        mov     DWORD PTR [r8], eax
        mov     DWORD PTR [rcx], edx
        ret

是的。这就是函数 std::remquo and std::div 的作用。