长整数问题

时间:2010-03-21 11:35:09

标签: c types turbo-c++

我是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 个答案:

答案 0 :(得分:6)

在printf中使用%ld作为long int。 %d用于int,在编译器中只有16位。对于错误消息,请使用x = 40000L。

答案 1 :(得分:0)

将long更改为unsigned,40000将适合unsigned int。

答案 2 :(得分:0)

假设您使用的是Windows,那么最佳解决方案是针对32位或64位平台。 16位程序甚至不能在64位版本的Windows上运行;你应该真的升级。

Microsoft拥有Visual Studio的免费版本:Visual C++ Express Edition。这是一个很好的选择,因为它带有一个完整的IDE。

Gcc也可用于Mingw形式的窗户。不幸的是,mingw本身并不会发布现成的编译器,但其他人会这样做,例如equation.comTDM

答案 3 :(得分:0)

或许刷上variadic formatting可能会有所帮助:)当你(或printf()子系统)实际扩展variadic arguments时,它会假设你知道它们是什么类型。

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

此外,请跟踪signedness以避免意外结果。

换句话说,当你调用printf()或接受elipsis的任何其他内容时,请确保你传递的是什么。这不仅限于printf(),实际上冒险超出通常不会产生编译器警告。

相关问题