一个关于c语言的问题!求高手解答

#include<stdio.h>main(){intx=12345;inty=-23456,sum1;intz=32800,sum2;sum1=y-x;sum2=z-y... #include <stdio.h> main() {int x=12345;
inty=-23456,sum1; int z=32800,sum2; sum1=y-x; sum2=z-y printf("sum1=%d\nsum2=%d\n",sum1,sum2 ) } 这个程序哪里出问题了,程序测试表示输出结果不对!
#include <stdio.h>
main()
{int x=12345;
long y=-23456,sum1;
unsigned int z=32800,sum2;
sum1=y-x;
sum2=z-y;
printf("sum=%1d\nsum2=%u\n",sum1,sum2 这是原有的程序,最先那个问题是我改了之后的,我就想问为什么这样改会不行! 求解答,谢谢!
展开
 我来答
半季流年
2011-08-07 · TA获得超过1533个赞
知道小有建树答主
回答量:616
采纳率:0%
帮助的人:765万
展开全部
可能是你数据的计算结果超出了整型变量的表示范围!!
对于int型变量,不同的编译器为其分配的内存大小都不同,我的意思是说虽然内存是由系统分配,但却是由编译器申请大小的。有的编译器会申请分配2个字节,比如TC,而有的会申请4个字节大小,比如VC6.0。所以在不同的编译器里编译,int型变量的表示范围也不同,如果为其申请2个字节,那它表示的范围就是-2^15~2^15-1,也就是-32768~32767;如果是4个字节,那范围就是-2^31~2^31-1。你试试在VC下编译运行,这个程序的输出就正确了!
追问
我用的就是tc,vc嘛,待会儿我试试!
kaixingui2012
2011-08-07 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6194万
展开全部
#include <stdio.h>
int main( void )
{
int x=12345;
int y=-23456,sum1;
int z=32800,sum2;

sum1=y-x;
sum2=z-y;

printf("sum1=%d\nsum2=%d\n",sum1,sum2);
}
一、注意书写格式,不然不好检查错误。
二、C中不支持全角信息,所有的标点符号全要用英文字符。
追问
这个,用搜狗打的时候打在这上面就是这样子,标点符号在tc上面打的是对的,那些英文的地方有打错的吗?不符合逻辑的,你可以试试tc输我问题里的程序,看会不会和我出现同样的情况,程序能够运行,但是结果错误!这其实是书上的一个问题,原来的程序不是这样的,提问为什么x,y,z都定义成int后会不行,我就是想知道这个!谢谢你的答案!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
andyx_5
2011-08-07 · TA获得超过607个赞
知道小有建树答主
回答量:297
采纳率:100%
帮助的人:163万
展开全部
inty=-23456;
int和y之间没加空格,不知道你的问题是不是这里!
更多追问追答
追问
这个我知道,打上来的时候出错了,但如果是空格的问题程序是不会运行的,这明显是个error,必须改正后才能运行!现在是程序能运行但是是结果错误!所以,请帮忙看下还有其他地方出错没?
追答
我运行了一下,结果是:
sum=-35801
sum2=56256
结果是正确的,但是你源程序里面有好几处分号是中文的分号,不是英文的,我不知道是不是这个错误!你再看看吧!修改后的程序如下:
#include
main()
{int x=12345;
long y=-23456,sum1;
unsigned int z=32800,sum2;
sum1=y-x;
sum2=z-y;
printf("sum=%ld\nsum2=%u\n",sum1,sum2);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b54994c
2011-08-07
知道答主
回答量:9
采纳率:0%
帮助的人:1.3万
展开全部
#include<stdio.h>

int main()
{
long x = 12345;
long y = -23456;
long z = 32800;
printf("sum1 = %ld,sum2 = %ld\n",(y-x),(z-y));
}
这样试试
追问
也是可以运行,但显示的结果是sum1=29735,sum2=-1   不知道怎么解释,这个程序只是表示减法嘛,虽然用long y来定义变量,但结果应该和用什么来定义没关系啊!我认为结果就应该是sum1=-35801,sum2=56256!   求解答!
追答
哎,真是闲的没事做了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
舒心还飒爽丶彩旗x
2011-08-07 · TA获得超过1545个赞
知道小有建树答主
回答量:1594
采纳率:75%
帮助的人:730万
展开全部
用这么大的数字干嘛
追问
嗯,教材中给的数,我照打上去而已!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式