0

私は現在、値を計算し、それらの値をテキストファイルに出力するプログラムを作成しようとしています。コンパイル時に、次のエラーが発生します。

「ISOC90は混合減速とコードを禁止しています」

私のコンパイラはQuincy2005であり、問​​題として11行目(int f = 10;)にフラグを立てています。

#include <stdio.h>


int main()

{

FILE *output;
output = fopen("inductor.txt","a+");

int f=10;
float l, ir, realir;

printf("What is your inductor value (mH)\n");
scanf("%f", &l);

  while (f< 10000000){
  ir=((2*3.141)*f*l);
  realir = ir/1000;

  printf("If Frequency = %d Hz" ,f);
  printf(" Inductive reactance= %f Ohms\n",realir);

  fprintf(output, "%d Hz : %f Ohms\n ", f, realir);


 f=f*10;

 }

fclose(output);

return 0;
}

迷惑なことに、コンパイラを変更することはできません。

4

3 に答える 3

3

最初にすべての変数を宣言してからコーディングする必要があると言っていると思います。

例えば:

FILE *output;
int f=10;
float l, ir, realir;


output = fopen("inductor.txt","a+");
printf("What is your inductor value (mH)\n");
于 2013-01-07T17:35:21.793 に答える
1

output = fopen("inductor.txt","a+");他の変数宣言の下に移動します。最初にすべての変数を宣言してから、それらを使用する必要があります。

于 2013-01-07T17:34:51.567 に答える
0

以前の回答によると、ISO C90 では変数宣言とコードの混合が許可されていないため、これを無効にする方法は 2 つあります。1 つの方法については既に説明しました。変数宣言を提案どおりに移動します。

FILE *output;
int f=10;
float l, ir, realir;
output = fopen("inductor.txt","a+");
// More code

別の方法もあります。ISO C90 によれば、ブロックが open された後のコード内でのみ変数を宣言できます{。コードブロックはいつでも自由に導入できるので、コードをあまり変更したくない場合は、ブロックを開始してそこにコードを入れることができます。この方法で宣言された変数は、それらを含むブロック内でのみ有効であることに注意してください。最初のオプションを強くお勧めします。

FILE *output;
output = fopen("inductor.txt","a+");
{
int f=10;
float l, ir, realir;
// More code on this variables.
}
// Variables declared in the block previously will not be valid here.
于 2013-01-07T17:43:36.667 に答える