c/c++ cin>> cout<< scanf() printf() 返回值
来源:互联网 发布:js bytearray 遍历 编辑:程序博客网 时间:2024/05/16 13:06
1.scanf函数返回成功读入的数据项数,读到文件末尾出错时则返回EOF。
如:
1
scanf
(
"%d %d"
,&a,&b);
while(
scanf
(
"%d %d"
,&a,&b)!=EOF);//acm中常用在读入未知数据 数多少时的情况
函数返回值为int型。如果a和b都被成功读入,那么scanf的返回值就是2;
如果只有a被成功读入,返回值为1;
如果a和b都未被成功读入,返回值为0;
如果遇到错误或遇到end of file,返回值为EOF。
2.printf函数返回值是整型值,其值为printf实际控制输出的字符数。
例如:
1
2
3
4
printf
(
"%d"
, printf
(
"baijia"
)
);
//输出为:baijia6
3.cin 为iostream 类的一个对象,对象是无返回值的,>>为位运算符的重载,而>>操作符返回的是操作的流的引用,也就是istream&。
while (cin >> a >> b);
while里面判断的是bool值,不能判断istream&,打开<ISTREAM>头文件,找到类模板basic_istream的定义:
typedef basic_istream<_E, _Tr> _Myt;
_Myt& operator>>(......) ......
说明cin >>的返回值类型就是basic_istream&,while()中要求是布尔表达式,难不成basic_istream&类型可以转换成bool类型?继续查看头文件,发现所有的operator重载函数都是<<和>>,没有找到用于类型转换的操作,追溯到父类basic_ios,打开头文件<ios.h>,找到ios中类型转换函数的定义:
operator void *() const{
if(state&(badbit|failbit) )
return 0;
return (void*)this;
}
编译器会在需要的情况下将ios类型自动转换为void*类型。因此,在表达式while (cin >> m >> n)中,括号中的表达式为了匹配bool类型将自动转换为void*类型。如果读入时发生错误返回0,否则返回cin的地址。
另附:windows 中键盘输入替代文件中EOF的是Ctrl+Z
0 0
- c/c++ cin>> cout<< scanf() printf() 返回值
- 讨论C++的cin/cout与C的scanf/printf
- cin cout scanf printf
- eclipse C/C+ CDT中scanf、cin、 printf、cout不能debug输入输出的问题
- cin,cout与scanf,printf
- scanf&printf VS cin&cout
- C++的cin/cout为什么比C语言的scanf/printf慢
- 【C++】cin、cout的效率比scanf和printf低的解决方法
- C++ 的 cin/cout 为什么比 C 语言的 scanf/printf 慢
- cin cout输入输出pk printf scanf
- cin,cout与scanf,printf 差别
- cin/cout 比 scanf/printf 慢吗
- c语言中 scanf() 和printf()的返回值
- C语言中scanf()和printf()的返回值问题
- 【C/C++】Cin与Cout
- cin,cout与scanf,printf的速度到底相差多少
- cin,cout与scanf,printf的速度到底相差多少
- cin,cout与scanf,printf的速度到底相差多少
- LruCache
- 码神之旅第三天
- 求每门课的第一名的简单sql语句
- POJ1704之Nim博弈
- POJ 2823 Sliding Windows(单调队列)
- c/c++ cin>> cout<< scanf() printf() 返回值
- Class类文件结构分析
- Codeforces 373C:Counting Kangaroos is Fun(二分+贪心)
- 浅谈操作系统对内存的管理
- HDU1847之SG值
- wait和waitpid函数
- 第4课 Go数组Array和切片Slice
- MySQL读写分离介绍
- 【例题】【拓扑排序】NKOJ 3731 wjj的排列序列