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 那么我还需要将 'l' 与 40000 // 一起使用吗?

4

4 回答 4

6

在 printf 中使用 %ld 作为 long int。%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 的形式用于 windows。不幸的是,mingw 本身并没有发布即用型编译器,但其他人会发布,例如equation.comTDM

于 2010-03-21T11:50:14.123 回答
0

也许复习可变参数格式可能会有所帮助:) 当您(或 printf() 子系统)真正开始扩展可变参数时,它假设您知道它们是什么类型。

这不仅适用于 printf,还适用于在讨论 printf 时使用 va_*() 或 v*printf() 的任何其他函数。不要忘记你的类型。

此外,跟踪签名以避免意外结果。

换句话说,当您调用 printf() 或其他任何接受省略号的东西时,请确定您传递的是什么。这不仅限于 printf(),实际上超出此范围通常不会产生编译器警告。

于 2010-03-21T11:52:30.383 回答