开发者社区> 问答> 正文

声明无符号和有符号char,减1之后,用%u打印出来结果不一致是为什么呢?

#include <stdio.h>

int main() {
    char a = 0;
    unsigned char b = 0;
    --a;
    --b;
    printf("char a = %u \n",  a);
    printf("Unsigned char is %u", b);
    
    
    return 0;
}

运行结果:

char a = 4294967295
Unsigned char is 255

展开
收起
a123456678 2016-06-08 19:53:16 2152 0
1 条回答
写回答
取消 提交回答
  • #include <stdio.h>
    #include <stdlib.h>
    
    int main() {
        char a = 0;
        unsigned char b = 0;
        --a;
        --b;
        //类型转换 %u 应该是按4字节整数输出 printf应该有隐式类型转换
        int i = a;
    
        printf("char a = %u \n", i);
        printf("Unsigned char is %u", b);
    
        system("pause");
        return 0;
    }
    2019-07-17 19:32:37
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载