1

今朝、私の CS ラボで、いくつかの C コードをコンパイルして実行していました。コードは次のとおりです。

#include <stdio.h>
#define SIZE 3

int main()
{
float x[SIZE];
float *fp;
int i;

for(i=0; i<SIZE; i++)
//{
    x[i] = 0.5*(float)i;
//}

for(i-0; i<SIZE; i++)
//{ 
    printf(" %d %f \n", i, x[i]);
    
//}

fp=x;

for(i=0; i<SIZE; i++)
//{
    printf(" %d %f \n", i, *(fp+i));
//}  
}

これは、Ubuntu ターミナルでコンパイルに使用したコマンドです。

gcc -o プログラム program.c

これは私が実行するために使用したコマンドです

。/プログラム

これは私が遭遇した結果です:

0 0.50000

1 1.50000

2 2.50000

これは、私が予想し、同じラボの他のコンピューターで見つけた結果です。

0 0.50000

1 1.50000

2 2.50000

0 0.50000

1 1.50000

2 2.50000

免責事項:私は自分のコードが他のコンピューターのコードと完全に無傷であることを二重にチェックし、三重にチェックしました。

明らかに、ここでコンパイラに何か問題があります。誰が私に何が問題なのか教えてもらえますか? そして、それを修正する方法は?

よろしく

4

1 に答える 1

7

あなたの問題は次のとおりです。

for(i-0; i<SIZE; i++)
   ^^^^^

これにより、for ステートメントが無効になるため、printf次のステートメントでは出力が得られません。厳密な警告を指定し
てコンパイルすると、コンパイラーはそのように通知します。

出力:

cc1: エラーとして扱われる警告
prog.c: 関数 'main' 内:
prog.c:15: エラー: 効果のないステートメント

明らかなタイプミスを修正すると、すべてのコンパイラが出力を 2 回生成します

于 2012-06-21T05:02:21.147 に答える