質問
私はCで初心者だし、ターボC ++コンパイラ(16ビット)を使用します。
私が書いているソフトウェアでは、最大の答えは、私はそれよりも数が多い場合は、私がlong int
を使うの周り32000です。
私は以下のプログラムを実行する場合:
#include <stdio.h>
void main()
{
long int x;
x=40000;
printf("%d", x);
}
そして、私は一定の値が関数main()
に長いというエラーを取得します。
どのように私は32000とは、このエラーを取り払うより多くのことを答えを得ることができますか? 私は40000 // ??
と 'L' を使用する必要があり、また、その後の符号なし整数を使用する場合も、%LDにNW I変更%dと40000Lを使用BT解決
long int型のためのprintfで使用%ldの。 %dは、あなたのコンパイラで16ビットを持つint型のためです。そして、エラーメッセージについて、使用のx = 40000Lます。
他のヒント
変更長い符号なしに、40000 unsigned int型に収まるます。
あなたは窓にしていると仮定すると、これを解決する最善の方法は、32または64ビットプラットフォームを標的とすることです。 16ビットプログラムでも64ビット版のWindows上で実行されません。あなたが本当にアップグレードする必要があります。
マイクロソフトは、Visual Studioの無料版があります:のVisual C ++ Express Editionを。それは完全なIDEが付属していますので、これは優れたオプションもあります。
GCCはまた、Mingwをの形でのウィンドウでご利用いただけます。残念ながら、mingwの自体はすぐに使用できるコンパイラを解放しませんが、他の人は、このような<のhref =「http://www.equation.com/servlet/equation.cmd?call=fortran」のrel = "nofollowをnoreferrerとして、やります「> equation.com のか、 TDM のます。
おそらく、可変長フォーマットの上でブラッシュアップする時点で:)あなたを助ける(またはかもしれませんprintf()サブシステム)は、実際にそのあなたは、彼らが入力するものを知っていると仮定し、可変長引数を拡大するに届きますされます。
これはprintfのために行くだけでなく、VAを採用し、他の関数_ *()またはV *のprintf()のprintfを議論するとき。あなたのタイプの失うことはありませトラックを行います。
また、符号の有無の予期しない結果を避けるために。
を追跡 あなたは(printf関数を呼び出す時点で言い換えれば、、)、または何か他の受諾省略記号>あなたが合格しているかの確認してください。これは、多くの場合、コンパイラの警告を生成しませんそれを超えて思い切っ実際には、printfの()に限定されるものではない。