最小数の変数 (2 未満では作成できませんでした) と最小行数も使用して、階乗演算で可能な限り短いスニペットをコーディングしたかったのです。しかし、ロジックは適切で正しいと思いますが、機能していません:/
ここにあります: 5 の階乗と言います。
#include<stdio.h>
main()
int x, i = 5;
{
while(i!=1)
{
i--;
x *= i;
}
printf("%d",x);
}
それでは、そのコードが何をするかを説明しましょう。
ループ内でi
4 にx = 5 * 4
なると、これで 20 になります。
次のラウンドi
は 3 です。
x = 20 * 3
次のラウンドi
は2
x = 60 * 2
nexti
は 1 x = 120 * 1
なので、階乗です。
半行で難読化されたコードを思いつくことができる優秀な頭脳がそこにいることは知っていますが、なぜエラーが発生するのかを知るだけで満足します.
人々の入力後に更新:
i!=2 を変更しても、常に 0 になります。
main()
{
int x, i = 5;
while(i!=1)
{
i--;
x *= i;
}
printf("%d",x);
}
最終的な解決策と説明:
私は PHP と Java でコードを書いていますが、今日は C で簡単にやりたかったので、これを書いたとき:
int x、i = 5;
PHP や JAVA のように、両方とも 5 に初期化されるのは当然だと思っていましたが、そうではありません!
だから、私がするなら
#include<stdio.h>
main()
int x = 5;
int i = 5;
{
while(i!=1)
{
i--;
x *= i;
}
printf("%d",x);
return (0);
}
私のコードは動作します。
基本的な構文エラーを指摘してくれたすべての人に感謝します。
構文エラーは、言語規則に精通していない場合に発生しますが、最も重要なのはコードのロジックであり、それは正しかったです。