-5

次のように、ソースファイルの1つにコードがあります。

#include <stdio.h>
#include <math.h>

int a ;
int b = 256 ;
int c = 16 ;
int d = 4 ;

int main() {

    if ((d <= (b) && (d == ( c / sizeof(a))))
    {
        printf("%d",sizeof(a) );
    }
    return 0;

} 

キャストを削除し、データ名を簡略化しました。Thesizeof(a)は 4 と見なすことができます。構文が有効かどうかを知りたいifのですが、有効な場合はなぜ実行されないのですか?

PS : 時間の制約により、これについて長い間座っていませんでした。コードに幼稚なエラーが見つかった場合は、ご容赦ください。

4

6 に答える 6

4

コンパイルしてみましたか?

ifステートメントにはもう1つ必要です)。それまたはそれを単純化して:

if ((d <= b) && (d == c / sizeof(a)))

複雑ですが、printfステートメントではC99に「%zu\n」を使用する必要があります。

于 2012-09-06T15:32:01.577 に答える
2

IMO の閉じ括弧が 1 つありません。私はあなたの if を縦括弧の配置テクニックで開きました。

#include <stdio.h>
#include <math.h>

int a ;
int b = 256 ;
int c = 16 ;
int d = 4 ;

int main() {

    if (
        (
         d <= (b) && (
                      d == (
                             c / sizeof(a)
                           )
                     )
        )
       //Here needs another closing parantheses
    {
        printf("%d",sizeof(a) );
    }
    return 0;

}

実際には、スニペットのここでいくつかの括弧を安全に削除できます。

于 2012-09-06T15:34:03.960 に答える
1

printfステートメントに改行を追加してみてください。

printf("%d\n", sizeof a);

通常、標準出力はバッファリングされるため、改行があるか、呼び出し のfflush(stdout);後にを追加しない限り、出力がすぐにコンソールに表示されるとは限りません。printf

于 2012-09-06T15:32:45.163 に答える
1
((d <= (b) && (d == ( c / sizeof(a)))) 

(の前に余分に見えbます。

( (d <= b) && (d == (c/sizeof(a))))
于 2012-09-06T15:32:51.800 に答える
1

11 行目の括弧を 1 つ閉じるのを忘れました。6 つ開いて 5 つ閉じました。

于 2012-09-06T15:34:26.227 に答える
1

if ステートメントに問題があると思います。次のようになります。

if ( (d <= b) && (d == ( c / sizeof(a))))

「b」の左側に余分な ( がありました

于 2012-09-06T15:36:03.153 に答える