本文介绍了程序崩溃时,如果`(可变%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)`的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-27 20:44