为什么布尔类型变量不能直接用读语句输入
答案:4 悬赏:40 手机版
解决时间 2021-03-31 07:37
- 提问者网友:相思似海深
- 2021-03-30 09:59
为什么布尔类型变量不能直接用读语句输入
最佳答案
- 五星知识达人网友:低血压的长颈鹿
- 2021-03-30 10:44
这同编译器有关。
如果用 #include
bool 的 定义 是:
typedef int BOOL;
所以 BOOL 就是 整型。
输出 数值 就是 整型。
BOOL x=0;
scanf("%d",&x);
// 愿意加一句 if (x != 0) x=1; 也无妨。
----------------------
如果你的编译器定义 是:
typedef unsigned char bool;
那你 输入输出 就按1字节整型 考虑就可以了。
如果用 #include
bool 的 定义 是:
typedef int BOOL;
所以 BOOL 就是 整型。
输出 数值 就是 整型。
BOOL x=0;
scanf("%d",&x);
// 愿意加一句 if (x != 0) x=1; 也无妨。
----------------------
如果你的编译器定义 是:
typedef unsigned char bool;
那你 输入输出 就按1字节整型 考虑就可以了。
全部回答
- 1楼网友:詩光轨車
- 2021-03-30 11:47
%d是用于输入int类型的,占4字节。而bool只占1字节。
- 2楼网友:撞了怀
- 2021-03-30 11:14
是对的啊
#include
void main()
{
bool x=0;
//CTRL + C 退出循环
while(1)
{
scanf("%d",&x);
if(x)
printf("TRUE\n");
else
printf("FALSE\n");
}
}追问如果你在scanf("%d",&x);后加上printf("%d",&x);就会发现是不对的追答执行printf("%d\n",&x);时,输出语句要读取包括x后的4个字节的内容,然后转换为整型,结果当然会不一样。
#include
void main()
{
bool x=0;
//CTRL + C 退出循环
while(1)
{
scanf("%d",&x);
if(x)
printf("TRUE\n");
else
printf("FALSE\n");
}
}追问如果你在scanf("%d",&x);后加上printf("%d",&x);就会发现是不对的追答执行printf("%d\n",&x);时,输出语句要读取包括x后的4个字节的内容,然后转换为整型,结果当然会不一样。
- 3楼网友:北城痞子
- 2021-03-30 10:51
如果是C,很不幸,scanf没有对应的转换控制符。
如果是C++,用cin试试。
如果是C++,用cin试试。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯