如何在C,C ++中输入1字节整数值

时间:2014-09-26 17:51:42

标签: c byte

我尝试将整数(-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上工作

谢谢,希望你帮助我!

2 个答案:

答案 0 :(得分:5)

你想:

scanf("%hhd", &x);

来自scanf(3) man page

  

<强> 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;