问答详情
源自:4-9 循环结构之for循环(二)

水仙花数的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这几个数字,而打两个等号就输出的是对的呢?

提问者:代码是诗是歌是山川是江河是春风不如你 2016-11-05 07:45

个回答

  • Wolfit4351993
    2016-11-05 08:47:38
    已采纳

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