为什么打印x总是等于零?
#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个字节,所以当打印它们时,它们都应该有我放在其中的值。
发布于 2018-07-12 21:31:36
在代码中,
scanf("%d%d",&x,&y);是undefined behavior。转换说明符和提供的参数不匹配。对于scanf()系列,%d需要一个指向有符号整数的指针类型的参数,而您提供的是一个指向无符号char的指针。
您需要使用
scanf("%hhu%hhu",&x,&y);发布于 2018-07-12 21:44:23
字符的格式说明符是%c。使用%d会导致未定义的行为(覆盖堆栈上的下一个变量)。
如果您想要一个8位无符号整数,那么可以使用uint8_t (stdint.h)以及inttypes.h中的SCNu8和PRIu8宏。
发布于 2018-07-13 00:07:31
数据类型是char,所以char的scanf基本上是%c。如果您的x是一个字符,那么您需要分隔到下一行。整数的scanf是%d。
https://stackoverflow.com/questions/51306991
复制相似问题