为什么“sizeof(double) > -1”是假的?

问题描述

int main()
{
    if(sizeof(double) > -1)
        printf("M");
    else
        printf("m");
    return 0;
}

我期望输出为 M 但它是 m。有人能解释一下输出的原因吗?

解决方法

那是因为 sizeof 返回的是 size_t 值,即一个无符号整数类型,所以 -1 会溢出。