首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C中扫描和打印字符变量

在C中扫描和打印字符变量
EN

Stack Overflow用户
提问于 2018-07-12 21:30:13
回答 3查看 560关注 0票数 0

为什么打印x总是等于零?

代码语言:javascript
复制
#include <stdio.h>

int main()
{
    unsigned char num, x, nnum, y = 0;
    printf("please enter the number of bits u want to clear \n");
    scanf("%d%d", &x, &y);
    printf("%d%d", x, y);
    return 0;
}

我尝试将它们分开放置,但从y中获取变量后,x变为零。我知道它们最终会存储在堆栈中,每个char都是1个字节,所以当打印它们时,它们都应该有我放在其中的值。

EN

回答 3

Stack Overflow用户

发布于 2018-07-12 21:31:36

在代码中,

代码语言:javascript
复制
 scanf("%d%d",&x,&y);

undefined behavior。转换说明符和提供的参数不匹配。对于scanf()系列,%d需要一个指向有符号整数的指针类型的参数,而您提供的是一个指向无符号char的指针。

您需要使用

代码语言:javascript
复制
 scanf("%hhu%hhu",&x,&y);
票数 3
EN

Stack Overflow用户

发布于 2018-07-12 21:44:23

字符的格式说明符是%c。使用%d会导致未定义的行为(覆盖堆栈上的下一个变量)。

如果您想要一个8位无符号整数,那么可以使用uint8_t (stdint.h)以及inttypes.h中的SCNu8和PRIu8宏。

票数 0
EN

Stack Overflow用户

发布于 2018-07-13 00:07:31

数据类型是char,所以char的scanf基本上是%c。如果您的x是一个字符,那么您需要分隔到下一行。整数的scanf是%d。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51306991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档