A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hbpiaoyi 高级黑马   /  2016-9-1 07:45  /  2170 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

谁能解释这个现象,if里面的语句竟然执行了
int a = 4294967295;
if (a == -1) {
    printf("%d\n", a);
}

5 个回复

倒序浏览
int 类型存储的最大数是2147483647
4294967295超出了int的存储范围
在内存中两个数的补码是一样的,int 类型变量赋值4294967295跟-1相等
回复 使用道具 举报
数据溢出问题,建议用笔写下四位二进制数,类比一下思路更清晰
回复 使用道具 举报
ln931460905 发表于 2016-9-1 16:38
int 类型存储的最大数是2147483647
4294967295超出了int的存储范围
在内存中两个数的补码是一样的,int 类 ...

    int a = -1;
    unsigned int b = 4294967295;
    if (a == b) {
        printf("%u, %d\n", a, b);
    }
那有没有符号,到底有什么用呢,if里面的语句也执行了
回复 使用道具 举报
涨姿势了
回复 使用道具 举报
ln931460905说的对
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马