#include <stdbool.h>
int main ()
{ bool b=7>6;
bool t=true;
bool t=2;
printf ("%d", b);
return 0;
}
bool t=true;
bool t=2;
这两行重复声明变量了,后一行应该去掉 bool 直接 t = 2;
结果是1啊,7>6,表达式成立,由于是布尔类型,只有0和1,既然成立那就是1
如果输出t的值。也是1
如图:
bool类型只有两个值true和false,true是1,false是0。无论是数字或逻辑表达式在赋值给bool变量后都会被设置为true或者false,即1或0。
bool b = 7 > 6;中赋值运算符 = 的优先级低于运算符 > 的优先级,所以这里会先进行 7 > 6的运算结果为真,即为true,然后赋值给b,所以b的值为true。
你这定义了两个bool t的变量并赋值,这是错误的,不可以定义两个相同的变量,所以这里定义一个bool t即可,可以多次赋值,但无论给t赋值true还是赋值2,true和2都代表了真,所以t的值都是true。
其实bool的值只有1和0都是int类型,所以在打印时候是可以使用%d来进行打印,打印结果也是1或0。
这里打印的结果b是1,t也是1