したがって、私は、数値の平方根になるforループを作成しようとしていますが、 ですが、制御文はdouble型を持つことができないので、この平方根を型intとして定義する必要があります。Cでsqrtをint型として定義していますか?
基本的に私が行ったことは、タイプint
としてint1
を定義し、次にint1=sqrt(n);
を持っています。
しかし、コンパイラはそれを受け入れていません。助けて?
int1 = (int) sqrt(n);
したがって、私は、数値の平方根になるforループを作成しようとしていますが、 ですが、制御文はdouble型を持つことができないので、この平方根を型intとして定義する必要があります。Cでsqrtをint型として定義していますか?
基本的に私が行ったことは、タイプint
としてint1
を定義し、次にint1=sqrt(n);
を持っています。
しかし、コンパイラはそれを受け入れていません。助けて?
int1 = (int) sqrt(n);
だ
int int1 = (int) sqrt(n);
あなたは単にint
にsqrt()
の結果をキャストすることができます:あなたは本当に唯一の整数をしたい場合は は、ここに私のコード全体(それはエラトステネスのふるいのためのアルゴリズムです)
intキャストは0に丸めます。アプリケーションによっては、これが必要なものかもしれませんし、 'int int1 =(int)ceil(sqrt(n));'が必要かもしれません。 –
私はそれに何か問題はありません。あなたのループにj
を使用していることがわかり、宣言されていないので、私たちにあなたのエラーを表示して読んでください。また、このコードはあなたの意見で何をすべきか?
int n, primecap[n], int1, i;
n=50;
initArray(primecap[n]);
あなたの問題は、あなたが書いているのか分からないということです。
また、ここで劇中のタイプに関する仮定のカップルがある
int int1 = (int)(lround(sqrt(n));
注意を検討するかもしれないが、これはあなたのために働く必要があります。
のsqrt()関数の性質を考えると、あなたも無サイズデータ型にlround()の結果を代入検討するかもしれないが(すなわちunsigned long型など)
'int(...)'は有効なC構文ではありません。 '(int)(...)'を意味しましたか? –
コードを修正しました。 – Throwback1986
+1の 'lround()'です。 「最も近い整数値に引数を丸め、途中の場合をゼロから丸める」 – chux
int int1 = sqrt(n);
これはStandard Cで完全に有効であり、コンパイラはそれを受け入れるべきです。 コンパイラでいくつかの警告オプションを有効にしたか、エラーがプログラムのどこかにあります。
(私はあなたがmath.h
とn
算術型であるが含まれて想定しています。)
+1は、キャストが役に立たないことを指摘する唯一の人だからです。 –
だから、Cで、私は数の平方根に上がるためのループを作るしようとしているが、私は必要制御文は2つの型を持つことができないので、その平方根を型intとして定義します。
forとwhileループの構造には、任意の型を使用できます。
型
int
としてint1
を定義し、int1=sqrt(n);
を有します。
これは完全に問題ありません。
しかし、コンパイラは約(私はideoneにあなたのコードを試みたが、別に行方不明ヘッダと宣言されていない識別子(
j
、primecap
)から、コンパイラは文句didin'tそれを
を受け付けていませんこの特定のもの)。
あなたはタイプキャスティングに精通していますか? (http://www.aui.ma/personal/~O.Iraqi/csc1401/casting.htm) – ruakh
@ruakh:実際には現在の状況よりも良い答えです。状況の理由を指摘してください。あなたはそれを答えにするべきです。 – haylem
コードを見るためにどこか別の場所に行かせないでください。ここに投稿してください。あなたが記述しているように問題が真実ならば、それよりはるかに小さなコードでそれを再現することができます!しかし暗黙的なキャストを使用した表現は完全に有効ですが、あまり参考にならないので、あなたの問題は他の場所にあります。 "*コンパイラがそれを受け付けていない"場合は、コンパイラのエラーメッセージまたはビルドログを追加します。 – Clifford