-4

私は以下のコードを実行しました

#include<stdio.h>
int main()
{
    char ch;
    if(ch = printf(""))
        printf("It matters\n");
    else
        printf("It doesn't matters\n");
    return 0;
}

「それは問題ではありません」という出力が得られます。誰かがこのコードがどのように機能するか説明してください。ch = printf("") を実行するとどうなるか >

4

4 に答える 4

9
printf("")

正常に印刷された文字数を返します。だから条件

if(ch = printf(""))

0 に設定されていると失敗しますch。したがって、else 句が実行されます。

于 2013-06-20T17:49:15.383 に答える
1

printfマンページから:

正常に返されると、これらの関数は出力された文字数を返します (文字列への出力を終了するために使用される null バイトを除く)。

printf の結果を ch に割り当てています。これは、印刷された文字数を返します。文字を印刷しないため、0 が返されます。これは false と見なされ、else が実行されます。

于 2013-06-20T17:50:07.353 に答える
1

C の関数printf()は、印刷出力の長さを返します。あなたの例では、 にprintf("")評価され0ます。この値が割り当てられch、条件の値になります。条件は「false」を意味するため、else ブランチが使用されます0if

于 2013-06-20T17:50:14.200 に答える
0

printfドキュメントから:

成功すると、書き込まれた文字の総数が返されます。

空の文字列を書き込んでいると、printfは 0 を返します。次に、その 0 をch変数に代入し、代入の値 (0) をifステートメントで使用します。0 が に評価されるfalseと、2 番目のメッセージが出力されます。

于 2013-06-20T17:53:09.957 に答える