0

これが非常に初歩的である場合は申し訳ありませんが、学校でプログラミングを始めたばかりで、解決策を探しましたが、残念ながら何も役に立ちませんでした。私はこのコードを持っています:

   #define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int logic(int a, int b)
{
    int c = a % b;
    a++;
    b--;
    printf("==%d %d %d==\n", a, b, c);
    return b + a + c;
}

int main()
{
    int a, c;
    float d, f;
    a = 10;
    c = 5;
    f = 2;

    d = logic(a, logic(c, f));
    printf("%d %d %.2f %.2f\n", a, c, d, f);
    return 0;
}

これの出力は次のとおりです。

'== 6 1 1==
==11 7 2==
10 5 20.00 2.00'

問題は、'd = logic(a, logic(c, f));'上記の論理関数に関して行がどのようにコンパイルされるかです。最初の出力を取得すると仮定すると、論理関数は c と f に 5 と 2 の値を取り、a と b の関数を実行します。しかし、次の出力がなぜ'==11 7 2=='. 'c + b + a;'+ 演算子をコンマに置き換えると、出力の最初の値 (変数を配置する順序に関係なく 11) のみが出現し、残りは 0 になります。

これを手伝ってください、私は信じられないほど困惑しており、何時間もそれを続けてきましたが、まだ何もありません.

4

1 に答える 1