【问题标题】:Return value of a 'boolean' in CC中“布尔”的返回值
【发布时间】:2020-09-26 05:50:29
【问题描述】:

以下哪种返回类型是以下相等性检查的正确类型?为什么?

int foo1(short x) {
    return x<0;
}

short foo2(short x) {
    return x<0;
}

char foo3(short x) {
    return x<0;
}

#include <stdbool.h>
bool foo4(short x) {
    return x<0;
}

【问题讨论】:

  • 拥抱 C99 并前往 bool
  • x&lt;0 是关系测试,而不是相等测试。

标签: c boolean


【解决方案1】:

所有这些都将相同。整数会自动转换为布尔值并返回 C。

但是,如果您使用来自stdbool.hbool 类型,则代码的意图 是最清楚的。

在 1999 版标准添加 stdbool.h 之前的代码中,通常在某些标头中定义了 BOOL 类型。这种模式不应该真正用于新项目,但在旧项目中保持相同的风格是有意义的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-05
    • 2011-09-16
    • 2013-08-18
    • 2018-01-24
    • 2011-12-14
    • 2020-07-29
    • 2014-12-13
    • 1970-01-01
    相关资源
    最近更新 更多