Chinaunix首页 | 论坛 | 博客
  • 博客访问: 150104
  • 博文数量: 24
  • 博客积分: 455
  • 博客等级: 下士
  • 技术积分: 309
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-22 09:43
文章分类

全部博文(24)

文章存档

2013年(7)

2012年(5)

2011年(11)

2010年(1)

我的朋友

分类: C/C++

2012-03-21 18:33:55

在   看到一个有趣的例子
不用操作符实现两个数相加,代码如下:

  1. int main()
  2. {
  3.         int a=9;
  4.         int b=3;
  5.         printf("%d\n",printf("%*s%*s",a,"",b,""));
  6.  
  7. return 0;
  8. }
结果在这里:

神奇啊!

printf函数中的*操作符用来指定输出的个数,这个值由printf后面的第一个参数指定
所以printf("%*s%*s",a,"",b,"")可以分解为printf("%*s",a,"")输出a个空格,同理printf("%*s",b,"")是输出b个空格,这种写法好处是是a,b都是变量,可以在外部进行修改。
printf("%*s%*s",a,"",b,"")其实就是输出了a+b个空格,在这里就是12个了,而printf的返回值是总共输出的字符个数,所以上面的语句输出是

  1. 12
12个空格加上12这个数字。

牛!
阅读(2052) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~