2017-07-21 6 views
0
とGETCHAR
#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; 
} 

エラーは、私がCプログラミング、_Bool

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

'if(putchar(b1)= 1){}' if(putchar(b1)== 1){} ' –

+1

' _Bool = b1; 'これはコンパイルされますか? –

+1

'1'は '' 1 ''と同じではありません。 0. – alk

答えて

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; 
} 

2つの問題:_Bool b1

  • 変更_Bool = b1
  • 変更if(putchar(b1) = 1)if(putchar(b1) == 1)またはif(b1)と記載されています。
+0

出力では、0または9またはその他の値を書き込むと、最初のprintfだけが表示されます。 1 – eXme

+0

@eXme:コードで使用している関数のドキュメントを読んだことがありますか? – alk

+0

私はちょっと新しくC.に慣れています。私はそれがどのように動作するのか理解していますが、おそらく私が見ているように何か間違っていました。 – eXme

0

シンプルタイプミス取得する場合:

1あなたはif(putchar(b1) == 1)ではなくif(putchar(b1) = 1)が必要_Bool b1;ではなく_Bool = b1;

2を必要とします。 1〜putchar(b1)を割り当てようとしていますが、これはCでは不可能です。したがって、コンパイラのエラーです。

putchar(b1)を条件付きで使用することも疑問です。あなたは、より簡単に

if (b1){ 

putchar戻ってあなたのケースでは、常に非ゼロになります出力ストリームに書き込まれた文字の数、など、もしかして?ここ

+0

と同じです。===7 \t C:¥Netzwerk¥owncloud¥Visualisierung¥TAG3¥3.5 logの後に別のエラーが発生しました。データ型\ bool_leer.c \t [エラー]予想される識別子または '(' before '='トークン – eXme

+0

'_Bool b1;'、 '_Bool = b1;'ではありません。 – melpomene

+0

Ok。すべてのエラーを修正しました。このサイトに適しているのボーダーライン;しかし、それはよく書かれていた – Bathsheba