在这种情况下,sizeof(int) 返回什么

What does sizeof(int) return in this case?

本文关键字:返回 什么 int 这种情况下 sizeof      更新时间:2023-10-16
#include<stdio.h>
#include<conio.h>
void main()
{   
    if(sizeof(int)>=-2)    
        printf("True");
    else
        printf("False");
}

当我尝试使用 Turbo 编译这段代码时C++它返回 False 而不是 True .但是当我尝试打印 int 的值时,程序返回 2。

这怎么可能? 而sizeof(int)返回 2 和是 2>=-2 .

sizeof(int) 被替换为在大多数实现中未签名的类型 std::size_t

将签名与未签名进行比较会导致奇怪的结果,因为签名被提升为无签名。

您可以获得合理的结果,如下所示

if(static_cast<int>(sizeof(int)) >= -2)

如果您正在使用C编译器

if((int)sizeof(int) >= -2)

例如,使用一些警告标志编译代码-Wall最有可能警告有符号/无符号比较。(如果您没有忽略警告(

sizeof的类型是size_t(typedef unsigned int size_t(。 unsigned int与签名相比可能会导致错误的答案。