关于C语言的输出问题?
关于C语言的输出问题?
日期:2019-12-02 17:53:29 人气:1
由于char类型比int类型级别低,C规定不同类型表达式的结果取较高级的类型,常数整数被默认是int型,所以a-1的类型是int型,因此输出按int类型处理;a-1是8个1,最高位是1,输出时被解释为负数,用1在左侧扩展到32位,它就是-1。而a = a-1的等号右侧同样是int型,但左侧是unsigned char型,赋值规则规定要将右侧的类型转换为左侧类型赋给左侧变量,那么结果是unsigned char型,尽管也是8个1,最高位也是1,但因按“无符号”型对待,所以输出时用0扩展到32位,结果就是25