【问题标题】:How can a string be a boolean value?字符串如何成为布尔值?
【发布时间】:2015-11-30 06:09:01
【问题描述】:
char **commands = parse_line( input, ';' );
int i = 0;
while ( commands[i]) {
  /* Runs some functions, commands[i] not affected */
  i++;
}

parse_line 的标头

char **parse_line(char *line)

在 while 循环中,command[i] 真的可以是真的吗?

char *line 类似于ls -l\n

注意:\n 包含在内,因为用户必须在输入终端命令后按 RETURN

【问题讨论】:

  • 将 false 视为“等于 0”,将 true 视为“不等于 0”。
  • {delim, '\n'} --> {delim, '\0'};
  • 请正确缩进您的代码。这有助于每个人阅读您的代码。
  • 对不起,我是不是缩进有误?如果这是一个问题,我使用两个空格而不是四个空格。编辑:哦,我很抱歉。没有意识到 parse_line 格式错误。固定

标签: c string pointers while-loop boolean


【解决方案1】:

由于command[i] 指的是char *,因此如果非空则认为1,如果空则认为0

【讨论】:

  • 除非您将null 更改为NULL,否则您的答案在技术上是错误的。 :)
【解决方案2】:

在您的代码中,commands[i] 将解析为类型 char *,即指针。

  • 如果指针的值不是 NULL,它将被视为 TRUE。
  • 如果指针为NULL,则将其视为FALSE。

用于条件检查。

【讨论】:

  • 因为指针还是一个地址,是一个非零整数,对吗?
  • @CodeSammich 差不多,除了int 应该是intptr_tuintptr_t
【解决方案3】:

C 中,任何非零值都表示为真。所以对于所有值不是0 的字符指针,条件成立。

如果commands[i] = NULL - 那么这个条件在C 中变为假。

Null pointer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 2012-04-02
    • 2021-02-23
    • 1970-01-01
    • 2016-07-13
    • 2011-11-12
    相关资源
    最近更新 更多