C语言练级笔记:Printf

C语言练级笔记:Printf

1
2
3
4
5
6
int main()
{
  int i=43;
  printf("%d\n",printf("%d",printf("%d",i)));
  return 0;
}

你能马上告诉我它的输出结果吗?昨天同学问我这个问题的时候,我果断懵了,毫无把握地说了一句43,当然,肯定是错的。

为了搞清楚这个问题,我先翻开了课本,很遗憾,谭浩强老师没有告诉我。那就google之吧。原来,printf()也是有返回值的,它的返回值就是输出的字符数。因此,形如:

1
  printf("%d\n",printf("%d",printf("1"));

 

上面这段代码执行后就会输出12了。而最开始那段代码输出结果就是4321了。
而且,这玩意还真有应用的价值。比方说以后要统计字符串含有多少字符的时候,甚至可以不用strlen了,看例子:

1
2
3
4
5
6
7
8
9
int main()
{
  char i[]="i love you";
  int j;
  j=printf("%s",i);
  printf("%d",j);
  getch();
  return 0;
}

 

这样就可以取得字符串的长度了。

甚至,你可以用它得到一个数字是几位数,这应该是我见过的最简单得到一个数的位数的方法了。

1
2
3
4
5
6
7
8
9
10
int main()
{
  int a;
  scanf("%d",&a);
  int j;
  j=printf("%d",a);
  printf("%d",j);
  getch();
  return 0;
}

对了,你知道最上面的代码源自哪里吗?告诉你吧,它居然是网站注册的验证码!不相信?自己看去:http://www.ppurl.com/register/


转自:http://xhxh.me/?cat=23

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值