我是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 // ??
答案 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.com或TDM。
答案 3 :(得分:0)
或许刷上variadic formatting可能会有所帮助:)当你(或printf()子系统)实际扩展variadic arguments时,它会假设你知道它们是什么类型。
这不仅适用于printf,还适用于讨论printf时使用va _ *()或v * printf()的任何其他函数。不要忘记你的类型。
此外,请跟踪signedness以避免意外结果。
换句话说,当你调用printf()或接受elipsis的任何其他内容时,请确保你传递的是什么。这不仅限于printf(),实际上冒险超出通常不会产生编译器警告。