不要将正常值和错误标志混在一起返回。

正常值用输出参数获得 ,而 错误标志用 return 语句返回。

C标准库函数的设计者为什么要将 getchar声明为令人迷糊的 int 类型呢?

他会那么傻吗?

在正常情况下,getchar 的确返回单个字符。

但如果 getchar 碰到文件结束标志或发 生读错误,它必须返回一个标志 EOF。

为了区别于正常的字符,只好将 EOF 定义为负数 (通常为负 1)。

因此函数 getchar 就成了 int 类型。

我们在实际工作中,经常会碰到上述令人为难的问题。

为了避免出现误解,我们应 该将正常值和错误标志分开。

即:正常值用输出参数获得,而错误标志用 return 语句返 回。

函数 getchar 可以改写成 BOOL GetChar(char *c); 虽然 gechar 比 GetChar 灵活,例如 putchar(getchar()); 但是如果 getchar 用错了, 它的灵活性又有什么用呢?

 

 

 1 #include <iostream>
 2 #include <stdlib.h>
 3 #include <math.h>
 4 
 5 //main()函数的定义
 6 /* run this program using the console pauser or add your own getch, system("pause") or input loop */
 7 using namespace std;
 8 int main(int argc, char** argv) {
 9  double x;
10 
11     //循环输入数据计算对数
12     do {
13         cout<<"x=";
14         cin>>x;
15         if (x<=0) break;
16         cout<<"log("<<x<<")="<<log(x)<<endl;
17         cout<<"log10("<<x<<")="<<log10(x)<<endl;
18     } while(1);
19 }