devC++程序没错啊,可是为啥运行结果出错?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了devC++程序没错啊,可是为啥运行结果出错?相关的知识,希望对你有一定的参考价值。

源程序:
#include<stdio.h>
#include"math.h"
main()

long a,b,c;
scanf("%d",&a);
b=a*a;
c=a*a*a;
printf("%d的平方是%d,%d的三次方是%d",a,b,a,c);
scanf("%d",&a);

例子:为什么输入“123”,程序运算正确,而输入“1122345”,程序运算结果错误呢?

计算过程中溢出了,long型在32位计算机上表示的最大整数为2的32次方减一,也就是
4294967295
参考技术A 你设的a,b,c都是long型,而你输入a为1122345的话这个数的平方和立方将变得非常大以至于超过了long所能表示的范围产生溢出,因此会出现错误的结果。

c语言helloworld代码是对的,但编译错误?

这个从图示来看编译没有错误

使用devC++编译运行结果如下

参考技术A 写c语言的时候,如果代码没错,这只能说明语法没有出错,直接导致的结果就是能编译通过,并不意味着执行的结果就是正确的。影响c语言代码执行结果的因素非常多。

一、指针的不正确运用;

二、变量精度问题。char,int,unsigned int,long ,float等,如果变量精度使用不正确,也会影响运算结果;

三、运算符的应用不正确。例如除,取余的区别;

四、正负符号位;

五、运算符的优先级使用;

六、编译器不同。各种编译器也可能造成结果不一致;

C语言虽然是一门比较简单的语言,但是要掌握这些细节,其实并不容易。追问

能看出来我这个问题出在哪里吗

参考技术B

看不出 你说的 错误

参考技术C "代码是对的",不要把自己放到"我是对的"的位置上去,这样就没有办法找自己问题了.既然编译没过,肯定哪错了
你代码不完全对,main函数的signature应该是int main(int argc, char* argv[]),编译器只是检查的比较宽松,有些书籍也不够严谨

至于编译,明明是过了啊?为什么说编译错误?追问

刚刚才搞明白谢谢

本回答被提问者采纳
参考技术D

编译显示正确了啊。要运行才显示Hello world

以上是关于devC++程序没错啊,可是为啥运行结果出错?的主要内容,如果未能解决你的问题,请参考以下文章

devc++为啥代码改变编译运行却没变 ?

为啥会出错啊!???????

为啥devc运行和编译可以但是没分

c语言helloworld代码是对的,但编译错误?

devc++格式为啥那么丑

DEV C++如何显示运行结果