为了账号安全,请及时绑定邮箱和手机立即绑定

水仙花数的bug

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num,sw,gw,bw;
    for(num=100;num<1000;num++)
    {
        gw=num%10;
        sw=(num%100)/10;
        bw=num/100;
        if(num=gw*gw*gw+bw*bw*bw+sw*sw*sw)
        {
            printf("%d\n",num);
        }
    }
    printf("以上为所有水仙花数");
    return 0;
}



为什么这个输出水仙花的代码,在if后的条件中只打一个等号会输出1、8、729、370、371、378、1099这几个数字,而打两个等号就输出的是对的呢?

正在回答

1 回答

两个等号在c语言里是判断符号(判断等号两边是否相等,返回值只有1或0),而一个等号则为赋值符号,将右边的值赋值给左边。

0 回复 有任何疑惑可以回复我~
#1

代码是诗是歌是山川是江河是春风不如你 提问者

那我打一个等号,if语句应该会出错啊,为何调试后没有问题,且还会输出1,8,729,370,371,378,1099这几个数字呢?
2016-11-05 回复 有任何疑惑可以回复我~
#2

代码是诗是歌是山川是江河是春风不如你 提问者

非常感谢!
2016-11-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

水仙花数的bug

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信