【发布时间】:2019-07-24 19:29:57
【问题描述】:
每次我在a之后在b中设置一个值,该值在a中重置为0 . 换句话说,在代码中,无论我在 a 中输入什么,在第二个 scanf 函数之后它总是 0。
编辑:我需要使用 b 作为文章的 char 类型,以提高内存效率,所以我不能将 b 设置为 int,但我需要在其中输入整数。
EDIT2:我需要在b中输入一个整数,例如输入:
1
2
如果我从那点开始
printf("%d",a);
我得到 0。
unsigned short a;
char b;
scanf("%hu",&a);
scanf("%d",&b);
【问题讨论】:
-
"%d"inscanf()需要一个指向int的指针。您正在传递一个指向char的指针并调用 Undefined Behaviour。试试int b;。 -
是否保证整数值在
CHAR_MIN(-127)和CHAR_MAX(127)之间?或者,提出一个一般性问题:您正在读取的第二个值的范围是多少? -
问题编辑说你想在
b中输入一个整数值。这只能是 0..9 范围内的单个数字,然后需要对其字符值(通常是 ASCII)进行调整,例如scanf(" %c", &b); b -= '0';。 -
@meaning-matters 是的,这是有保证的。
-
@xing 完美!您可以将此评论添加为答案,以便我接受吗?