C++ 做水仙花数,if里面==写成了=,为什么会输出这种结果?

 

先声明, 赋值操作的返回值是赋的值本身, 比如x = 3的返回值是3. 下面一次一次进循环给你分析

第一次进循环, d=100, 算出来abc分别是1,0,0,所以e=1,由于赋值操作d=e的存在,这里d被修改为1,同时if(1)为true,进入循环, 输出d的值,也就是1. 最后d++,d=2

第二次循环, d=2, 算出来a,b,c=2,0,0,所以e=8,d=e=8,if(8)为true, 输出d为8, d++, d=9

第三次循环, d=9, a,b,c=9,0,0,e=729, d=e=729, if(729)true, 输出729, d++, 730

第四次循环, d=730, a,b,c=7,3,0 d=e=370, if(370),输出370, d++, 371

第五次循环, d=371, a,b,c=3,7,1 d=e=371, 这刚好是一个水仙花数, if(371)输出371, d++, 372

....

可以看出来这是一个死循环, d的值被修改为3个数位立方的和+1, 这个和很难大于1000

这些结果就是算出来的e的值吧, 括号里是==那就是判断结果的true和false ,=的话就是先将e赋值给d,然后判断d是==0还是不等于0