首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mod C的问题

mod C的问题
EN

Stack Overflow用户
提问于 2015-08-12 11:23:36
回答 4查看 109关注 0票数 0

我刚开始做代码强制问题,我从问题4-A (西瓜)开始,在给定整数x千克的情况下,如果你把西瓜分成两半,每个西瓜都有偶数千克,如果不是“否”,程序将打印"YES“。我这里的问题是,当输入为5时,我得到的结果是“是”,而它应该是“否”。下面是我的代码:

代码语言:javascript
复制
#include <stdio.h>
int main (int x) {
    if((x/2) % 2 == 0) {
        printf("YES");
    }else {
        printf("NO");
    }
    return 0;
}
EN

回答 4

Stack Overflow用户

发布于 2015-08-12 13:06:26

这个问题与mod无关,而是与参数传递有关。

main的典型原型是

代码语言:javascript
复制
int main(int argument_count, char *arg_list[], ...);

调用my_exe 5会将第一个参数x (argument_count)设置为2,并将下一个未使用的参数设置为2

代码语言:javascript
复制
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或编码框架中肯定是可能的。

票数 2
EN

Stack Overflow用户

发布于 2015-08-12 11:26:20

代码语言:javascript
复制
if((x/2) % 2 == 0)

这就是为什么要为5获取yes的原因,因为5/22(因为它是整数),而2%20

只要这样就行了-

代码语言:javascript
复制
if(x%2==0)
票数 0
EN

Stack Overflow用户

发布于 2015-08-12 11:29:21

因为参数是整型的,所以除法的余数将被保留。也就是说:5/ 2会得到一个2,然后那个2 mod 2会给你一个零。你应该做的就是把x%2放在'if‘语句里面。因此,有了5%,2会给你一个'1‘,这与0不同

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31955491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档