1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。
2、在test.cpp文件中,输入C语言代码:int a = -1024printf("%d", -a)。
3、编译器运行test.cpp文件,此时成功把负数转化为正数进行了输出。
可能的原因太多,可以肯定程序输出不在你的预想,代码有错。错误代码输出的结果没有参考性。先检查代码。比如:
一、运算式子有没错。
二、调用了未赋值且未初始化的变量。
三、数组访问越界。
等等。
程序会输出负数的原因是,在这个程序中你没有对每次运算的结果进行检查,因此当乘积超出了long类型的最大值时,就会产生溢出,导致结果为负数。为了避免这个问题,你可以在每次运算后检查结果是否已经超出了long类型的范围,并在必要时退出循环。可以这样改:
#include<stdio.h>
main()
{
long i
i=chengji()
printf("%ld", i)
}
long chengji () {
long a, b=1
for (a=1a<=100a+=2)
{
if (b >LONG_MAX/a) break
b *= a
}
return b
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)