首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么'false‘类型是int?(CS50)

为什么'false‘类型是int?(CS50)
EN

Stack Overflow用户
提问于 2021-05-16 14:27:06
回答 1查看 64关注 0票数 0

我想退出程序时,我的argv1包含一些字符,而不是字母表。因此,我指出:

代码语言:javascript
复制
for(int j = 0, p = strlen(argv[1]); j < p; j++)
    {
        if (false(isalpha(argv[1][j])))
        {
            printf("invalid character\n");
            return 1;
        }
    }

,但它说的是错误:调用对象类型'int‘不是函数或函数指针。我不明白这意味着什么。这是CS50周刊第2周的问题-替代。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-16 14:42:15

C中没有名为false的内置函数。您的表达式false(isalpha(argv[1][j]))有表单false(x),因此它看起来像一个函数调用。

标头<stdbool.h>定义了一个扩展为整数常量为零的宏。因此,false(x)实际上是0(x)。在这里,0是一个int常量。编译器消息“调用对象类型'int‘不是函数或函数指针”告诉您,不能像调用函数一样调用此int 0

如果您的程序中有一些名为false的函数,则可能通过包含<stdbool.h> (或者可能包含其他头文件)来有效地覆盖它。如果是这样,您应该重命名您的函数。

要测试表达式是否为“false”,可以使用!运算符:

代码语言:javascript
复制
if (!isalpha(argv[1][j]))
{
    // Code here will be executed when isalpha(argv[1][j]) is false.
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67557793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档