【问题标题】:C Programming, if getchar with _BoolC 编程,如果 getchar 和 _Bool
【发布时间】:2017-07-21 07:15:13
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

int main(void)
{
_Bool = b1;
printf("1 = Wahr, 0 = Unwahr\n");
b1 = getchar ();
if(putchar(b1) = 1) {
   printf("b1=1 =>wahr\n");
}
else {
   printf("b1= =>unwahr\n");
}
return 0;
}

我得到的错误

10  16  C:\Netzwerk\owncloud\Visualisierung\TAG3\3.5 log. Datentyp\bool_leer.c  [Error] lvalue required as left operand of assignment

【问题讨论】:

  • if(putchar(b1) = 1) {} --> if(putchar(b1) == 1) {}
  • _Bool = b1; 这还能编译吗?
  • 1'1' 不同。 0 也一样。

标签: c boolean


【解决方案1】:
int main(void) 
{
   _Bool b1 /* = 1 or 0 */;
   printf("1 = Wahr, 0 = Unwahr\n");
   b1 = getchar();
   if (putchar(b1) == 1) {
       printf("b1=1 =>wahr\n");
   }
   else {
    printf("b1= =>unwahr\n");
   }

   return 0;
}

这里有两个问题:

  • _Bool = b1 更改为_Bool b1
  • 如 Bathsheba 所指出的,将 if(putchar(b1) = 1) 更改为 if(putchar(b1) == 1)if(b1)

【讨论】:

  • 通过输出它只给我第一个 printf 没关系,如果我写 0 或 9 或其他。它也给了我真实的感觉 1
  • @eXme:您是否阅读了代码使用的函数的文档?
  • 我对 C 有点陌生。是的,这就是我理解它的工作原理的方式,但在我看来可能出了点问题..
  • 你能解释一下你想用这段代码实现什么吗?为什么要这样使用 putchar()?
  • 我认为 putchar() 是 getchar() 函数的输出。现在我明白它也可以没有 putchar()。如果它在 b1 变量中为 1 并且其他结果为 2nd printf,我需要它首先获得
【解决方案2】:

简单的错别字:

1 你需要_Bool b1; 而不是_Bool = b1;

2 你需要if(putchar(b1) == 1) 而不是if(putchar(b1) = 1)。您正在尝试将 1 分配给 putchar(b1),而这在 C 中是不可能的,因此会出现编译器错误。

您在条件句中使用putchar(b1) 也是有问题的。你的意思是,更简单

if (b1){

as putchar 返回写入输出流的字符数,在您的情况下总是非零?

【讨论】:

  • 在 == 7 7 C:\Netzwerk\owncloud\Visualisierung\TAG3\3.5 日志之后出现另一个错误。 Datentyp\bool_leer.c [错误] 预期标识符或 '(' 在 '=' 标记之前
  • _Bool b1;,不是_Bool = b1;
  • 好的。我已经修复了所有错误。这个问题处于适合这个网站的边缘;但写得很好。
  • #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;stdbool.h&gt; int main(void) { _Bool b1; printf("1 = Wahr, 0 = Unwahr\n"); b1 = getchar (); if(putchar(b1) == 1) { printf("- b1=1 =&gt;wahr\n"); } else { printf("- b1=0 =&gt;unwahr\n"); } return 0; } 它可以工作,但我得到相同的结果不管它是 1 还是 0
  • eXme,也添加了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-03
  • 2012-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多