Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么返回类型是isalpha()int而不是bool?_C++_C_Function - Fatal编程技术网

C++ 为什么返回类型是isalpha()int而不是bool?

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函数的返回类型像isalpha int,而不是C等中使用的bool

因为C最初没有内置bool类型。

原始C中没有bool数据类型

检查这个答案的理论:

在C标准库函数中广泛使用零表示假,非零表示真。这些函数中的许多起源于任何bool或bool之前,通常使用bool类型

具体来说,像isalpha这样的函数是在C89中指定的,但直到C99才是布尔类型


因此,希望在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;