本文介绍了程序崩溃时,如果`(可变%2 == 0)`的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在写认定的程序完美数的。 。此刻的输出是:
28 //完美
496 //完美
8128 //完美
130816 //不完美
2096128 //不完美
33550336 //完美
我决定创建数组并把它与数字,这完全把数(不休息)。因此,我将能够验证,如果它是一个的完美的号码或不加入数组的所有元素。但是,应用程序崩溃,我不明白为什么:
的#include<&stdio.h中GT;
#包括LT&;&stdlib.h中GT;诠释的main()
{
无符号长一些;
无符号长ARR2 [100] = {0};
INT K = 0; 为(数= 0;数字&下; = 130816;数++)
如果(130816%数== 0)
ARR2 [K +] =号; 对于(K = 0; K< 100; k ++)
的printf(%禄,ARR2 [K]); 返回0;
}
解决方案
您正在做的模量零
这里:
如果(130816%数== 0)
这是不确定的行为。如果您在 1
启动for循环,而不是它应该解决这个问题。然而,由于 N%1 == 0
所有 N
,你可能需要在 2 。
从标准, 6.5.5 / 5
(在 C11
不变):
这篇关于程序崩溃时,如果`(可变%2 == 0)`的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!