您可以使用scanf测试_Bool类型的有效输入吗?关于C
关于我用C编写的这段代码,我有一个问题:您可以使用scanf测试_Bool类型的有效输入吗?关于C,c,boolean,scanf,C,Boolean,Scanf,关于我用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的类型为\u B
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的类型为\u Bool*
”。据我所知,boolean被认为是int类型,所以我不确定为什么会收到此警告。除了设置另一个变量以使用scanf
进行测试,然后将另一个\u Bool
类型的变量指定为true或false之外,我还能如何测试这种情况?任何反馈都将不胜感激。谢谢大家:)。你们收到它是因为,它需要一个int*
,而你们传递的是一个\u Bool*
。它们都是整数,但类型不同——在我的系统中,\u Bool
的大小为1,而int
的大小为4
您需要的内容没有scanf
说明符,因此如果您确实需要最小的存储空间,则需要使用char
。之后,您始终可以将值分配给\u Bool
e、 g
(此外,您的代码无法按预期工作。如果您使用
%d
输入无效字符,它将进入一个无休止的循环。)您使用的是\u Bool
还是\u Bool
?如需有关CI中布尔类型的更多信息,请参阅。CI希望有一个说明符,否则,分配_Bool值本身会带来更多麻烦。但不用担心。谢谢你的帮助。我很感激:)!
scanf("%c",µw);
_Bool b = microw - '0';