| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 441 人关注过本帖
标题:[求助]一个奇异的输出语句
只看楼主 加入收藏
wh2000292
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-3-19
收藏
 问题点数:0 回复次数:5 
[求助]一个奇异的输出语句
main()
{char *format="%s,a=%d,b=%d\n";
int a=1,b=10;
a+=b;
printf(format,"a+=b",a,b);
}
这个程序的运行结果是:a+=b,a=11,b=10
main()
{char *p="%d,a=%d,b=%d\n";
int a=111,b=10,c;
c=a%b;p+=3;
printf(p,c,a,b);
}
而这个程序的运行结果却是:a=111,b=10
这个输出格式到底是怎么一回事啊?
搜索更多相关主题的帖子: 语句 输出 
2007-03-28 18:20
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
收藏
得分:0 

函数参数是右->左入栈的,所以C不会打印。

2007-03-28 18:36
wh2000292
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-3-19
收藏
得分:0 

谁能解释一下这样的格式是怎么一回事啊?


2007-03-28 18:43
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
收藏
得分:0 

printf是个变参函数,原型:int printf( const char* format, …);它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的

2007-03-28 18:56
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
收藏
得分:0 

在网上搜索以下变参函数有很多介绍的

2007-03-28 18:59
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
你控制格式错了,把p加3,现在的地址已经改变,printf("a=%d,b=%d\n",c,a,b);不改变指针应该没什么问题

学习需要安静。。海盗要重新来过。。
2007-03-29 15:39
快速回复:[求助]一个奇异的输出语句
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016141 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved