嗨,我现在正在学习C语言,并且练习我读过的书时遇到了一些问题.我的代码是这样的:
#include<stdio.h>
int main()
{
unsigned char one=0;
unsigned char two=0;
printf("Quantity 1 = ");
scanf("%d",&one);
printf("Quantity 2 = ");
scanf("%d",&two);
printf("The value is %d",one);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么当我试图看到one初始值的值出现而不是后面的值scanf?
你需要使用int与%d说明符结合的类型,并char使用%c说明符.并且%u使用无符号整数.
#include<stdio.h>
int main()
{
unsigned int one=0; unsigned int two=0;
printf("Quantity 1 = ");scanf("%u",&one);
printf("Quantity 2 = ");scanf("%u",&two);
printf("The value is %u",one);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Basicaly,scanf将尝试从输入中读取整数,并尝试将其存储在不够大的内存位置,因此您将具有未定义的行为.
你可以在这里找到很好的参考.
但是,如果您尝试将字符用于输入类型,您可能需要问问自己为什么没有机会输入第二个数量(如果您键入4并按Enter键).这是因为第二个scanf将输入键作为一个字符.此外,如果您尝试键入21(对于二十一个),它将填充第一个值,2第二个用1(以及它们的ASCII值).
所以,要小心 - 确保始终为变量选择正确的类型.