誰かが私に説明することができます。なぜこのコードをコンパイルするのが違う動作をするのですか?たとえば、gcc
には無限ループがありますが、clang
は期待通りに動作します。gccとclangをコンパイルする別の結果
私はこのコードをもっと醜いと知っています。数年前に書きましたが、なぜマシンを切り替えるのが簡単なコードにこのような影響を与えているのか疑問に思っています。少なくとも、スタック、ヒープ、何もない。非常に少なくとも
#include <stdio.h>
main()
{
int a,b,state,nl,i,temp1,temp2;
int words[10];
nl = temp1 = 0;
for(i = 0 ; i < 10 ; i++)
words[i] = 0;
while((a = getchar()) != EOF)
{
nl++;
if(a == ' ' || a == '\t' || a == '\n')
{
words[nl-2]++;
nl = 0;
}
}
for(b=0; b < 10; b++)
printf("%d",words[b]);
printf("\n");
for(b = 1 ; b <= 10 ; b++)
printf("%d",b);
printf("\n");
for(b = 0 ; b <= 10 ; b++)
if(words[b]>temp1)
temp1=words[b];
//printf("%d\n", temp1);
for(; temp1 > 0 ; temp1--)
{
for(i= 0 ; i <= 10 ; ++i)
{
if(words[i]>0)
{
// temp2 = i;
// for(; temp2 > 0; temp2--)
// printf(" ");
printf("#");
words[i]--;
}
else
printf(" ");
}
printf("\n");
}
}
このコードにはどのようなインプットがありますか? –
@AndrewL。 'int'をスプーフィングすると何も変わらないので、あなたのコメントはこの問題の範囲外です。もっと正確に言えば、コードは文字通り悪いと言いました。 – kAldown
@BillLynch './a.out
kAldown