模函数语法错误
Function Syntax Error with Modulo
我很困惑为什么Visual studio说在century)
之后,在% 7;
之前需要一个分号。它说我犯了一个语法错误。但我想把整个式子放在括号里然后对它取7的模
int determineDay(int month, int day, int year) {
const int HUNDRED_YEARS = 100;
int newYear = year % HUNDRED_YEARS;
int century = (year - newYear) / HUNDRED_YEARS;
if (month == 1) {
const int ONE_YEAR = 1;
month = 13;
year = year - ONE_YEAR;
int zellerNumber = (day + floor((13 * (month + 1)) / 5)) + year
+ floor(year / 4) + floor(century / 4) + 5 * century) % 7;
return zellerNumber;
}
else if (month == 2) {
const int ONE_YEAR = 1;
month = 14;
year = year - ONE_YEAR;
int zellerNumber = (day + floor((13 * (month + 1)) / 5)) + year
+ floor(year / 4) + floor(century / 4) + 5 * century) % 7;
return zellerNumber;
}
else {
int zellerNumber = (day + floor((13 * (month + 1)) / 5)) + year
+ floor(year / 4) + floor(century / 4) + 5 * century) % 7;
return zellerNumber;
}
}
正如其他人所说,您在day
之前缺少一个开括号。
加上…
这是一个小的语法错误,但如果你不努力简化你的逻辑,它们就会不断发生。注意,以下内容出现在if-else-if
的所有路径中:
int zellerNumber = (day + floor((13 * (month + 1)) / 5)) + year
+ floor(year / 4) + floor(century / 4) + 5 * century) % 7;
就像在数学中一样,你可以把它"因式分解"出来。由于您知道计算zellerNumber
的逻辑在任何情况下都是相同的(只有变量改变),因此您可以将其移动到if-else-if
下方。这也将允许您只有一个return
语句。通常情况下,你应该以此为目标。
简化你的逻辑,你会看到更少的语法错误,你遇到的错误将更容易发现。
相关文章:
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- 为什么我会收到错误 C2143 语法错误:缺少"*"之前的';'?
- 奇怪的代码抛出编译错误模板< J,int aSize=10> C2143:语法错误:在"<"之前缺少";"
- "错误 C0000:语法错误,令牌"<EOF>"处出现意外$end,并且不确定
- 我该怎么做才能摆脱使用命名空间时的语法错误?
- C++语法头文件错误
- 如何摆脱错误c2061;语法错误 cout?
- 语法错误:D3DX10Core 中的标识符'TEXTMETRICA'
- 错误 C2146:语法错误:标识符"A1"之前缺少","
- main.cpp(11):错误 C2059:语法错误:"字符串"
- 我想获取点的属性,它报告错误 C3867:"point::output_x":非标准语法;使用"&"创建指向成员的指针
- RedisGraph 语法错误在偏移量 8 靠近"创建"
- 如何修复此 FSM C++语法错误 C3867
- 函数错误 C2059:语法错误:'>'不起作用
- 为什么在main()之前断言会导致语法错误"error: expected ')' before numeric constant"?
- system() 返回错误语法错误:"("意外
- C++图形初始化错误(语法或丢失文件缺陷?
- 获取0:1(1):错误:语法错误,尝试编译着色器时意外$end
- Visual Studio错误:语法错误:标识符