我对我用C编写的代码片段有疑问:
printf("Do you own a microwave?Enter 1 for Yes and 0 for No\n");
while((scanf("%d",µw))==0){
printf("Please enter a valid number:\n");
scanf("%d",µw);}
我的编译器说如下:“format %d
期望类型为int*
的参数,但参数2的类型为_Bool*
”。据我所知,boolean被认为是一个int类型,所以我不确定为什么会收到这个警告。除了设置另一个变量以使用scanf
进行测试,然后将_Bool
类型的另一个变量分配为true或false之外,我还能如何测试此条件?任何反馈都表示赞赏。谢谢大家:)。
答案 0 :(得分:1)
你收到它是因为,它期待int *
并且你传递_Bool *
。它们都是整数,但不同的类型 - 在我的系统_Bool
上的大小为1,int
的大小为4。
你想要的没有scanf
说明符,所以如果你真的想要最小的存储空间,你需要使用char
。您可以随后将值分配给_Bool
。
e.g。
scanf("%c",µw);
_Bool b = microw - '0';
(此外,您的代码无法按预期运行。如果您使用%d
输入无效字符,它将进入无限循环。)