[英]How to input 1 byte integer value in C, C++
我尝试将整数(-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:发生错误:“变量'x'周围的堆栈已损坏”我在Microsoft Visual Studio上工作
谢谢,希望你能帮帮我!
你要:
scanf("%hhd", &x);
在scanf(3)
手册页中 :
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
,u
,x
,X
或n
转换说明符适用于类型为带signed char
或unsigned char
指针的参数。
如果您使用的是非标准的编译器,那么您的工作量可能会有所不同(并且您可能应该重新标记问题)。
做到这一点的标准方法是读入一个int
变量,然后复制到char
。
char x;
int i;
scanf("%d", &i);
x = (char) i;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.