又是简单的c问题,但实在想不通,麻烦大家了

yasmong 2003-10-16 08:25:09
请问:
main()
{
int c;
int a=3,b=5;
c=(a>b)?a=10:printf("%d",b);
printf("%d",c);/*此语句输出值为51
printf("\n");
printf("%s",c);/*此语句输出值为5
}
为什么用"%d"输出结果为51,而用"%s"输出结果为5呢?我先谢谢大家先!!!
...全文
51 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccwwbb 2003-10-19
  • 打赏
  • 举报
回复
这是编译器的问题了!可不必理会。
yasmong 2003-10-17
  • 打赏
  • 举报
回复
谢谢ccwwbb,你说的是对的,但为什么在tc中语句printf("%s",c);可以运行通过呢?
ccwwbb 2003-10-16
  • 打赏
  • 举报
回复
我把你的程序稍作修改:
#include<stdio.h>
main()
{
int c,d;
int a=3,b=589;
c=(a>b)?a=10:(d=printf("%d\n\n\n\n\n",b));
//printf返回值d为8 ,即b的字符个数5个"\n"和3个字符'5','8','9';
printf("%d",c);//此语句输出值为589
printf("\n");
// printf("%s",c);//此语句错,在我的bc6.0编译通不过
}

chuanwen 2003-10-16
  • 打赏
  • 举报
回复
是的
xiaohaozi0083 2003-10-16
  • 打赏
  • 举报
回复
main()
{
int c;
int a=3,b=5;
c=(a>b)?a=10:printf("%d",b);//此语句输出值为5
printf("%d",c);/*此语句输出值为1
printf("\n");
printf("%s",c);/*此语句没有输出值
}
c是int型的,%s是字符串型

printf的返回值是b的字符串数
例如:如果把printf("%d\n)的话;c的值就返回了2。
vanter 2003-10-16
  • 打赏
  • 举报
回复
c的值为51,当把c作为字符串输出时,输出的是地址51处的内容,此时正好为"5"
alongfly 2003-10-16
  • 打赏
  • 举报
回复
51是printf()的值,输出的5是巧合
aflyinghorse 2003-10-16
  • 打赏
  • 举报
回复
printf("%s",c);这句有错误,c是int型变量,
不能作为字符串输出,否则会产生运行时错误
aflyinghorse 2003-10-16
  • 打赏
  • 举报
回复
main()
{
int c;
int a=3,b=5;
c=(a>b)?a=10:printf("%d",b);//此语句输出值为5
printf("%d",c);/*此语句输出值为1
printf("\n");
printf("%s",c);/*此语句输出值为5
}
printf的返回值是打印的字符的个数

69,371

社区成员

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

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