浅谈printf函数的返回值
2016-01-31 21:46
369 查看
在一个群里看到这样一个题目:
下面附上输出结果:
最开始迷惑在这句话 if( printf("%d\n", i * i) > 2 ) 中的printf("%d\n", i * i),这玩意儿到底是多少?
百度了一下,printf的返回值是它输出的字符数.
比如printf("abcd\n"),这是printf返回的应该是5,因为有5个字符,分别是a,b,c,d,\n(注意\n是一个字符,转义字符)
printf("%d\n", i * i)这个函数返回的字符数由两部分组成:%d和\n。
如果%d代表的数字是100,那么%d就是3个字符,加上\n这个字符,一共4个字符,返回值为4。
i*i可能等于0,1,4,9,16,25,36,49,64,81,所以printf返回的字符可能是2个,3个。
#include <stdio.h> int main() { int i = 0; for(i=0; i<10; i++) { if( printf("%d\n", i * i) > 2 ) { printf(" i = %d\n", i); } } return 0; }
下面附上输出结果:
最开始迷惑在这句话 if( printf("%d\n", i * i) > 2 ) 中的printf("%d\n", i * i),这玩意儿到底是多少?
百度了一下,printf的返回值是它输出的字符数.
比如printf("abcd\n"),这是printf返回的应该是5,因为有5个字符,分别是a,b,c,d,\n(注意\n是一个字符,转义字符)
printf("%d\n", i * i)这个函数返回的字符数由两部分组成:%d和\n。
如果%d代表的数字是100,那么%d就是3个字符,加上\n这个字符,一共4个字符,返回值为4。
i*i可能等于0,1,4,9,16,25,36,49,64,81,所以printf返回的字符可能是2个,3个。
相关文章推荐
- 自动加载类
- 电力猫
- 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败
- python在不同层级目录import模块的方法
- 获取当前应用的版本名称和版本号
- Queue之ArrayDeque源码
- Android Studio GitHub 提交项目代码
- AJAX 跨域请求 - JSONP获取JSON数据
- 打印月历题解
- 对于工作的一些思考
- NFS介绍和安装
- ZooKeeper事务日志记录器SyncRequestProcessor
- win10快捷键
- 在Python中移动目录结构的方法
- Java中创建多线程
- java程序员必知的 8大排序
- 1011数的计算
- 虚拟机CentOS与本地主机通信
- ActionMode,actionModeBackground无效
- Junit学习笔记之-- 测试套件