質問

私は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の()に限定されるものではない。

scroll top