0

私は C の初心者で、Turbo C++ コンパイラ (16 ビット) を使用しています。

私が書いているソフトウェアでは、最大の答えは約 32000 です。それより大きな数が必要な場合は、 を使用しますlong int

次のプログラムを実行すると:

#include <stdio.h>
void main()
{
    long int x;
    x=40000;
    printf("%d", x);
}

次に、関数の定数値が長いというエラーが発生しますmain()

32000 を超える回答を得て、このエラーを取り除くにはどうすればよいですか? また、%d を %ld に変更し、符号なし整数を使用する場合は 40000L bt を使用します。また、40000 で 'l' を使用する必要があります //??

4

4 に答える 4

6

long int には、printf で %ld を使用します。%d は、コンパイラに 16 ビットしかない int 用です。また、エラー メッセージについては、x=40000L を使用します。

于 2010-03-21T11:44:26.520 に答える
0

long を unsigned に変更すると、40000 が unsigned int に収まります。

于 2010-03-21T11:41:03.977 に答える
0

Windows を使用していると仮定すると、これに対する最善の解決策は、32 ビットまたは 64 ビットのプラットフォームをターゲットにすることです。16 ビット プログラムは、64 ビット バージョンの Windows でも実行できません。本当にアップグレードする必要があります。

Microsoft には、Visual Studio の無料バージョンであるVisual C++ Express Editionがあります。これは、完全な IDE が付属しているため、優れたオプションです。

Gcc は、Mingw 形式のウィンドウでも使用できます。残念ながら、mingw 自体はすぐに使用できるコンパイラをリリースしていませんが、equation.comTDMなどの他のコンパイラはリリースしています。

于 2010-03-21T11:50:14.123 に答える
0

おそらく、可変個引数の書式設定をブラッシュアップすると役立つかもしれません:) あなた (または printf() サブシステム) が実際に可変個引数の展開に到達するまでに、それらがどのような型であるかを知っていると想定されます。

これは、printf だけでなく、printf について説明するときに va_*() または v*printf() を使用する他の関数にも当てはまります。自分のタイプを見失わないでください。

また、予期しない結果を避けるために、署名を追跡してください。

つまり、 printf() を呼び出すとき、またはelipsisを受け入れる他のものを呼び出すときまでに、何を渡しているかを確認してください。これは printf() に限定されたものではありません。実際、それを超えて冒険しても、コンパイラの警告が生成されないことがよくあります。

于 2010-03-21T11:52:30.383 に答える