我刚开始做 codeforces 问题,我从问题 4-A(西瓜)开始,其中给定一个 int x 公斤数,如果当你将西瓜分成两半时,程序将打印"is",每个都有偶数公斤,如果不是“否”。
我这里的问题是当输入为 5 时我得到"is",它应该是“否”
这是我的代码:
#include <stdio.h>
int main (int x) {
if((x/2) % 2 == 0) {
printf("YES");
}else {
printf("NO");
}
return 0;
}
问题与mod
无关,与参数传递有关。
main 的典型原型(prototype)是
int main(int argument_count, char *arg_list[], ...);
调用 my_exe 5
会将第一个参数 x
(argument_count) 设置为 2,而下一个未使用参数
arg_list[0] = "my_exe", // the first (0th) argument is the executable name
arg_list[1] = "5" // rest of parameters as arrays of chars
调用 my_exe
不带参数集 x = 1
给出 YES
另外,如果参数 x
是一个十进制值为 53 (0x35) 的字符 '5'
,则结果为 YES
。这将是非常规的行为,但在某些未公开的 IDE 或编码框架中绝对有可能。