我尝试将整数(-128-> 127)放到1个字节。 我用char 这是我的代码:
#include <stdio.h>
int main()
{
char x;
scanf("%d", &x);
printf("%d", x);
return 0;
}
屏幕上的结果是正确的,但在程序退出之前,它会发生损坏。如何修复1字节的存储整数,c,c ++
让我们举个例子: 输入128, 我的控制台将printf -128:发生错误:&#34;堆叠变量&#39; x&#39;被腐蚀了#34; 我在Microsoft Visual Studio上工作
谢谢,希望你帮助我!
答案 0 :(得分:5)
你想:
scanf("%hhd", &x);
<强>
h
强> 表示转化将是d
,i
,o
,之一u
,x
,X
或n
,下一个指针是指向short int
或unsigned short int
(而不是int
)的指针。
hh
至于h
,但下一个指针是指向signed char
或unsigned char
。
..并且由于下面提到过,根据C标准, 7.21.6.2 fscanf
函数,第11段:
长度修饰符及其含义为:
<强>
hh
强> 指定以下d
,i
,o
, {{1} ,u
,x
或X
转换说明符适用于带有指向n
或signed char
的类型指针的参数。
如果您使用非标准编译器,您的里程可能会有所不同(您应该重新提出问题)。
答案 1 :(得分:3)
标准方法是阅读int
变量,然后复制到char
。
char x;
int i;
scanf("%d", &i);
x = (char) i;