黑马程序员技术交流社区

标题: 奇妙的C语言 [打印本页]

作者: hbpiaoyi    时间: 2016-9-1 07:45
标题: 奇妙的C语言
谁能解释这个现象,if里面的语句竟然执行了
int a = 4294967295;
if (a == -1) {
    printf("%d\n", a);
}

作者: ln931460905    时间: 2016-9-1 16:38
int 类型存储的最大数是2147483647
4294967295超出了int的存储范围
在内存中两个数的补码是一样的,int 类型变量赋值4294967295跟-1相等
作者: absvir    时间: 2016-9-1 23:37
数据溢出问题,建议用笔写下四位二进制数,类比一下思路更清晰
作者: hbpiaoyi    时间: 2016-9-2 08:17
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里面的语句也执行了
作者: qweaschen    时间: 2016-9-2 21:32
涨姿势了
作者: Esen    时间: 2016-9-2 23:19
ln931460905说的对




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2