gpt4 book ai didi

c# - 如何将此函数从 C 转换为 C#?

转载 作者:太空宇宙 更新时间:2023-11-04 06:59:29 24 4
gpt4 key购买 nike

我已经完成了将此函数从 c 语言转换为 c# 的一半工作,但我完全不知道中间计算线的作用。

            y -= m < 3;

C 版

 int DayOfWeek(int d, int m, int y)
{
static int t[] = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 };
y -= m < 3;
return (y + y / 4 - y / 100 + y / 400 + t[m - 1] + d) % 7;
}

C#版本

 int DayOfWeek(int d, int m, int y)
{
int[] t = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 };
y -= m < 3;
return (y + y / 4 - y / 100 + y / 400 + t[m - 1] + d) % 7;
}

1) 我理解 y -= m 等同于 y = y - m 但“<”是做什么的?是表达吗?2) 如何将其余部分转换为 C#?

谢谢大家,澄清这是学位类(class)。

最佳答案

y -= (m < 3) ? 1 : 0;

或更易读

if (m < 3) y -= 1;

甚至

if (m < 3) --y;

这是一些使用条件返回 1 或 0 作为值的 C 代码。如图所示修复。

编辑:我现在看到评论说这段代码被混淆了。我想我是一个老 C 帽子,我在阅读它时立即发现它很明显,而不是我建议那样写。

或者我们可以用真正令人讨厌的方式来做这件事:

int DayOfWeek(int d, int m, int y) => (new DateTime(y, m, d)).DayOfWeek;

关于c# - 如何将此函数从 C 转换为 C#?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40333176/

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