VS中char赋值给bool为什么会发生截断呢

bool k='A';
VS输出中显示截断,“=” :char到bool,可是不都是一个字节吗??

你是坚坚的学生吧

bool类型的值只有true和false,底层实现是用0表示false,1表示true
对于下面代码,字符'a'(ASCII值为97)赋给bool类型变量b时,b中值是1,而不是97,因此发生截断

int main()
{
    char c = 'a';
    bool b = 'a';
}
c$ = 0
b$ = 1
main    PROC
$LN3:
        sub     rsp, 24
        mov     BYTE PTR c$[rsp], 97                  ; 00000061H
        mov     BYTE PTR b$[rsp], 1
        xor     eax, eax
        add     rsp, 24
        ret     0
main    ENDP

整数、浮点、无作用域 (C++11 起)枚举、指针和成员指针类型的纯右值,可转换成 bool 类型的纯右值。

零值(对于整数、浮点和无作用域 (C++11 起)枚举)、空指针值和空成员指针值变为 false。所有其他值变为 true

都是一个字节就不发生截断了吗
你身体的体积和一个行李箱体积一样
把你塞行李箱里不发生截断吗