プロジェクトオイラーのCで問題2を解決しようとしました。これは私の頭に浮かんだ最初の解決策であり、実際に正しい答えを出力します。問題は、私がプログラムを走らせるたびに、私には正しい答えである "2"か "4613732"のどちらかの異なる出力が得られるということです。私の貧しい英国人のために申し訳ありません、あなたは何が間違っているかを見つけるのを助けてくれますか?プロジェクトオイラー2# - 奇妙な出力
#include <stdio.h>
int main(){
int n, n1 = 1, n2 = 2, sum = 2;
while(n<4000000){
n = n1 + n2; /*calculate the next number of the series*/
n1 = n2;
n2 = n;
if(n%2 == 0){
sum = sum + n; /*if the number it's even add it to the main sum*/
}
}
printf("The sum is %d\n", sum);
}
「n」を初期化していないので、任意の値で開始できます。 '<4000000'という値で始まる場合、ループが実行され、正しい答えが得られます。値が '> = 4000000'で始まっていれば、ループは実行されず、' sum = 2'で始まったので出力は2です。これは[未定義の動作](https://stackoverflow.com/questions/4105123)として知られています。 – user3386109