gpt4 book ai didi

C - 尝试取 2 个数字的 mod 时出现奇怪的错误

转载 作者:行者123 更新时间:2023-11-30 19:42:02 25 4
gpt4 key购买 nike

我对 C 有点陌生,所以我对它的所有复杂性感到困惑。在此函数中,我试图查找一个月中的天数,包括闰年。当我尝试取 2 个数字的模时,我的问题出现在第二个 else 语句中。有什么帮助吗?这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int length(int month, int year)
{
int monthday;

if (month == 2) {
if ((year % 400 == 0) || ((year % 100 != 0) && (year % 4 == 0))) {
monthday = 29;
} else {
monthday = 28;
}
} else {
monthday = (30 + (month + floor((month / 8))) % 2);
}
return monthday;
}

最佳答案

mod 操作数仅接受两个整数。函数 floor 返回一个 double 值,因此这就是错误的根源。

请将该行替换为

monthday = (30 + (month + month/8)%2);

您不需要 floor 函数,因为在 C 中将两个整数相除会得到一个整数,即结果的下限。

通过尝试使用此函数编译程序,我收到此错误:

test.c:21:52: error: invalid operands to binary % (have ‘double’ and ‘int’) monthday = (30 + (month + floor((month/8)))%2);

关于C - 尝试取 2 个数字的 mod 时出现奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32937241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com