C++ 为什么返回类型是isalpha()int而不是bool?
为什么C函数的返回类型像isalpha int,而不是C等中使用的bool 因为C最初没有内置bool类型。原始C中没有bool数据类型 检查这个答案的理论:在C标准库函数中广泛使用零表示假,非零表示真。这些函数中的许多起源于任何bool或bool之前,通常使用bool类型 具体来说,像isalpha这样的函数是在C89中指定的,但直到C99才是布尔类型C++ 为什么返回类型是isalpha()int而不是bool?,c++,c,function,C++,C,Function,为什么C函数的返回类型像isalpha int,而不是C等中使用的bool 因为C最初没有内置bool类型。原始C中没有bool数据类型 检查这个答案的理论:在C标准库函数中广泛使用零表示假,非零表示真。这些函数中的许多起源于任何bool或bool之前,通常使用bool类型 具体来说,像isalpha这样的函数是在C89中指定的,但直到C99才是布尔类型 因此,希望在C标准库函数中都能看到这一点。您通常会看到BoL使用在C++代码中。p> C在1999年标准之前没有专用的布尔数据类型;在此之前,
因此,希望在C标准库函数中都能看到这一点。您通常会看到BoL使用在C++代码中。p> C在1999年标准之前没有专用的布尔数据类型;在此之前,该语言仅假设非零积分表达式表示真,零值积分表达式表示假 包括isalpha函数在内的许多标准库在bool数据类型引入之前就已经存在,因此这些函数返回int表示布尔值。为什么WG14没有更改与C99的接口?有很多遗留代码是在C89和更早版本下编写的,这样的接口更改会破坏这些代码,负责维护语言标准的委员会WG14不愿意这样做,这是可以理解的。见鬼,他们花了20多年的时间才摆脱了图书馆的电话
至于第二个问题,输出C99确实有一个布尔类型。@Mat:旧的C没有。这里有很多功能。这个评论比你的答案更具信息性和正确性。嗯,说它是常用的有点轻描淡写。标准将false定义为0,true定义为1。@LokiAstari C99 7.16使用true、false、bool指定stdbool.h,true扩展为1,false扩展为0;但是这些都没有在前面指定,例如ANSI C,它确实有例如isalpha。我不理解第二个问题。我同意这与关于int/bool的问题无关,但无论如何,可能是一个代码示例?@pb2q问题已经更新;
char *str = "This is a test";
...
cout << "str = " << str << "; address = " << (void *) str << endl;