求助,菜鸟求助2题!请各位指导

slyer 2004-03-30 06:32:57
1.
main()
{
int a,b,c;
long n;
a=19;
b=22;
c=650;
n=a*b*c;
printf("%ld\n",n);
}
为什么输出的是9556呢?
如果n=19*22*650
输出的也是9556。
另外,如果把c定义为long c;
则输出的是271700,也就是正确的结果,why?

2.
#include <stdlib.h>
main()
{
char *p,*q;
p=(char *)malloc(sizeof(char)*20);
q=p;
scanf("%s%s",p,q);
printf("%s%s\n",p,q);
}

如果输入字符是ab cd
输出的是cdcd
为什么不是abab呢?
感觉应该是输出两个相同的p值啊?
...全文
36 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qbql 2004-03-31
  • 打赏
  • 举报
回复
ok
zhangfjj 2004-03-30
  • 打赏
  • 举报
回复
19*22*650=271700即二进制的100 0010 0101 0101 0100
a*b*c的积用一个中间变量(int)存储,只能存储右16位,即0010 0101 0101 0100
不就是9556吗?
这种错误叫运行错误,在运行过程中出现了溢出。
slyer 2004-03-30
  • 打赏
  • 举报
回复
但是在第一题里面,9556是怎么来的呢???
zhangfjj 2004-03-30
  • 打赏
  • 举报
回复
junnyfeng(听风) 的是正解
zhangfjj 2004-03-30
  • 打赏
  • 举报
回复
VC可以通过~
-----------
是因为VC是32位编译器,int为32位,而TC是16位的编译器,int为16位。
5element 2004-03-30
  • 打赏
  • 举报
回复
VC可以通过~
langjifengyu 2004-03-30
  • 打赏
  • 举报
回复
计算机能用整形打印那么大的数吗
无符号型的才65536了
是不是实数啊
双进度
junnyfeng 2004-03-30
  • 打赏
  • 举报
回复
1。你一定是用TC编译的,int为16位,long为32位
a*b*c 这样的结果会用一个临时变量来放,这个临时变量是根据这几个数中最大类型的那 个变量来定义,这里最大是int了,但结果却是16位的int不能装载的,所以就截取了相应部分,刚好是9556,然后再赋给n
如果c定义为long,那临时变量就是long型了,可以放正确结果

2。p,q都是指向同一个内存地址,p接收了ab,本来打印也是ab,但是后面还输入了cd
这个cd放到q那里,而q与p是一样的,所以原先的ab被覆盖成cd了

languagec 2004-03-30
  • 打赏
  • 举报
回复
第一个没看清题目
languagec 2004-03-30
  • 打赏
  • 举报
回复
1. printf("%ld\n",n); //因为是%Ld而不是 %1d
2. 空格为两个字符串的分隔符,p先为ab,在q 为cd 所以指针指向cd 所以输出cdcd

littleeagle007 2004-03-30
  • 打赏
  • 举报
回复
只跟P 分配内存 没有跟Q分配内存 所以……
本套餐将包括两个重磅性的课程与一个赠送学习的课程,分别为SpringBoot实战视频教程与RabbitMQ实战教程跟SSM整合开发之poi导入导出Excel。目的是为了让各位小伙伴可以从零基础一步一个脚印学习微服务项目的开发,特别是SpringBoot项目的开发,之后会进入第二个课程:RabbitMQ的实战,即消息中间件在实际项目或者系统中各种业务模块的实战并解决一些常见的典型的问!核心的知识点分别包括 一、SpringBoot实战历程课程 (1)SpringBoot实战应用场景的介绍与代码实战 (2)发送邮件服务、上传下载文件服务、Poi导入导出Excel (3)单模块与多模块项目构建、项目部署打包、日志、多环境配置、lombok、validator以及mybatis整合实战跟多数据源实战 (4)Redis缓存中间件的实战与缓存雪崩跟缓存穿透等问的解决实战 (5)RabbitMQ消息中间件在业务模块异步解耦、通信、消息确认机制以及并发量配置等的实战 二、RabbitMQ实战教程课程 (1)RabbitMQ的官网权威技术手册拜读,认识并理解各大专有名词,如队列,交换机,路由,死信队列,消息确认机制等等 (2)RabbitMQ在业务服务模块之间的异步解耦通信实战,如异步记录日志与发送邮件等 (3)商城系统抢单高并发情况下RabbitMQ的限流作用与代码实战 (4)消息确认机制与并发量配置并用来实战商城用户下单 (5)死信队列深入讲解与DLX,DLK,TTL等概念的讲解并用来实战 “支付系统用户下单后支付超时而失效其下单记录”实战 详情,各位小伙伴可以查看两个课程的目录。相信学完该套餐相关课程后,你的实战能力将大大提升!涨薪将不再遥遥无期! 最后,赠送的SSM整合开发之POI导入导出Excel目的是为了让各位小伙伴也可以学习Spring+SpringMVC+Mybatis整合开发的项目,让大家一对比SpringBoot与SPring的项目开发流程以及复杂程度!!! 相信学完之后,你会对SpringBoot爱不释手!!

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧