これが非常に初歩的である場合は申し訳ありませんが、学校でプログラミングを始めたばかりで、解決策を探しましたが、残念ながら何も役に立ちませんでした。私はこのコードを持っています:
#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 になります。
これを手伝ってください、私は信じられないほど困惑しており、何時間もそれを続けてきましたが、まだ何もありません.