c/c++ cin>> cout<< scanf() printf() 返回值
2016-07-28 00:50
393 查看
1.scanf函数返回成功读入的数据项数,读到文件末尾出错时则返回EOF。
如:
函数返回值为int型。如果a和b都被成功读入,那么scanf的返回值就是2;
如果只有a被成功读入,返回值为1;
如果a和b都未被成功读入,返回值为0;
如果遇到错误或遇到end of file,返回值为EOF。
2.printf函数返回值是整型值,其值为printf实际控制输出的字符数。
例如:
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
如:
如果只有a被成功读入,返回值为1;
如果a和b都未被成功读入,返回值为0;
如果遇到错误或遇到end of file,返回值为EOF。
2.printf函数返回值是整型值,其值为printf实际控制输出的字符数。
例如:
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
相关文章推荐
- 实习点滴 - 破窗理论、C++ 函数模板静态库
- 优先队列--C语言实现与Java例子
- C++中标准类string常用示例
- c++对象内存模型分析工具
- C++中string和int之间的转换
- leetcode 328. Odd Even Linked List 16ms beats 96.25% c++
- hdoj1879 继续畅通工程
- hdoj1233 还是畅通工程
- hdoj1232 畅通工程
- hdoj 1863 畅通工程
- hdoj1875 畅通工程再续
- hdoj5734 Acperience
- hdoj5742 It's All In The Mind
- hdoj4497
- hdoj5428 The Factor
- 2016多校联训第二场 Keep On Movin hdoj5744
- hdoj3791 二叉搜索树
- C++ 值传递、指针传递、引用传递详解
- 观察者模式-c++实现
- 2016 多校联训 Permutation Bo hdoj5753