【发布时间】:2017-07-31 18:20:34
【问题描述】:
我有这段代码,但它似乎只打印了十六进制转换的最后 4 个字符。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main ()
{
int i;
char test [33];
printf ("Enter a number: ");
scanf ("%d",&i);
itoa (i,test,16);
printf ("hexadecimal: %s\n",test);
getch();
}
- 输入:3219668508
- 输出:3e1c
- 预期输出:bfe83e1c
帮忙?
【问题讨论】:
-
请记住,
int是有符号类型,通常只有 32 位。那你需要学习the ranges of integer values。现在,带符号的 32 位整数的最大值是多少? -
还有那个c++怎么样,我看c代码
-
@xander 我看到了 C 风格的 C++ 代码,因为在 C 中
int main ()将是int main(void)。我看不出为什么它是 C 而不是 C++。如果 OP 使用 C++ 编译器,则为 C++。 -
整数为 32 位。但在溢出之前它们只会上升到大约 20 亿,所以 scanf 会失败。
-
@mch 不幸的是,当函数没有参数时,初学者不明确使用
void是很常见的。而且现在大多数编译器前端都支持这两种语言,所以一个可以例如使用g++编译C 源代码,使用gcc编译C++ 源代码。因此,除非我们知道源文件的名称,否则真的没有什么可做的。