为什么输出结果不正确呢???

agangr 2003-01-15 10:04:34
#include "stdio.h"
main()
{
unsigned char str[1];
unsigned char buff[5];
str[0]=0x17;
sprintf(buff,"%d",str[0]);
printf("%d\n",buff); 得到 -44 ??????????
getch();

}

若我将printf("%d\n",buff);改写为printf(buff);则得到我想要的十进制数:23

是为什么呢?????????
...全文
46 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
SwordMan2001 2003-01-15
  • 打赏
  • 举报
回复
字符串buff怎么能用%d输出呢!

printf("%s\n", buff); 或
printf("%d\n", atoi(buff));
agangr 2003-01-15
  • 打赏
  • 举报
回复
printf("%d\n",buff[0])是一样的效果

但printf(buff[0])这是正确的啊
langziji 2003-01-15
  • 打赏
  • 举报
回复
buff是char *,如果强制转换成int型会出错的。
ziphyr 2003-01-15
  • 打赏
  • 举报
回复
数组名即数组的首地址,你用%d输出,就溢出了
熊主任 2003-01-15
  • 打赏
  • 举报
回复
呵呵,你打印buff[0]看看,因为buff是字符串的首地址,一不当心就溢出变负数了。
cache2002 2003-01-15
  • 打赏
  • 举报
回复
你用纯C做的吗?
不是吧,纯C应该通不过,你用什么编的,
SwordMan2001 2003-01-15
  • 打赏
  • 举报
回复
“改写为printf(buff);则得到我想要的十进制数:23”

printf(buff); 与 printf("%s", buff);
功能是完全相同的,buff是字符串,可以这样用,这就像

printf("hello");

char hello[]="hello";
printf(hello);
相同一样。
SwordMan2001 2003-01-15
  • 打赏
  • 举报
回复
printf(buff);就相当于
printf("%s", buff);
buff是一个字符串,它本身就是可输出的:

例如:
printf("hello");

const char s[]="hello";
printf(s);
其实是一样的。
sea_lover 2003-01-15
  • 打赏
  • 举报
回复
buff[]是字符型数组,怎么能用%d输出呢1
用%s试试
Bandry 2003-01-15
  • 打赏
  • 举报
回复
打印出的是buff的地址,程序当然能编译过

69,373

社区成员

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

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