/*********************************************
* @brief 计算除法,同时得到商和余数
* @param x 被除数
* @param y 除数
* @return 包含商和余数的结构体
********************************************/
lldiv_t lldiv(long long x, long long y);
!subtitle:说明
计算 long long 类型的除法,同时得到商和余数,其中商向零取整。
!subtitle:参数
x - 被除数
y - 除数
!subtitle:返回值
包含商和余数的结构体。
结构体定义可能为(字段顺序未定义):
struct lldiv_t { long long quot; // 商 long long rem; // 余数 };或
struct lldiv_t { long long rem; // 余数 long long quot; // 商 };
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
lldiv_t result = lldiv(10, 3); // 得 3 余 1
printf("lldiv(10, 3) = %lld ... %lld\n", result.quot, result.rem);
result = lldiv(-10, 3); // 得 -3 余 -1
printf("lldiv(-10, 3) = %lld ... %lld\n", result.quot, result.rem);
return 0;
}
运行结果:
lldiv(10, 3) = 3 ... 1
lldiv(-10, 3) = -3 ... -1
C23 standard (ISO/IEC 9899:2024):
7.8.2.2 The imaxdiv function (p: TBD)
7.22.6.2 The div, ldiv and lldiv functions (p: TBD)
C17 standard (ISO/IEC 9899:2018):
7.8.2.2 The imaxdiv function (p: 159)
7.22.6.2 The div, ldiv and lldiv functions (p: 259)
C11 standard (ISO/IEC 9899:2011):
7.8.2.2 The imaxdiv function (p: 219)
7.22.6.2 The div, ldiv and lldiv functions (p: 356)
C99 standard (ISO/IEC 9899:1999):
7.8.2.2 The imaxdiv function (p: 200)
7.20.6.2 The div, ldiv and lldiv functions (p: 320)