小编Nat*_*ent的帖子

布尔类型的值在C中更改

我注意到在C中,我的布尔变量以某种我不理解的方式被改变了.

#include <stdio.h>
#include <stdbool.h>

int main(void) {
   bool x, y;

   printf("x: ");
   scanf("%d", &x);

   printf("x is %d\n", x);

   printf("y: ");
   scanf("%d", &y);

   printf("x is %d\n", x);
   printf("y is %d\n", y);

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我输入1for的x值和y(1在此示例中)的任何值:

x: 1
x is 1
y: 1
x is 0
y is 1
Run Code Online (Sandbox Code Playgroud)

最后,y输出正确的原始值,但x神奇地改变0之间!

这不是一个问题,当用于输入x0因为对于两个输出xy如预期的是其各自的原始值.

请解释发生了什么!

c boolean scanf

7
推荐指数
4
解决办法
628
查看次数

标签 统计

boolean ×1

c ×1

scanf ×1