为什么下面的表达式结果是正确的,专门要求 C++

VIV*_*LIA 1 c++

#include <iostream>
using namespace std;

int main()
{
    if(sizeof(int)> -1)
        cout<<"ok";
    else
        cout<<"not ok";

    return 0;
} 
Run Code Online (Sandbox Code Playgroud)

int的大小不是应该是4吗,它应该大于-1。

Bat*_*eba 7

两件事情:

  1. sizeof(int)可以是任何正整数值。(我曾经开发过一个系统sizeof(char),其中sizeof(int)、 和sizeof(long)均为 1 并且均为 64 位类型。)

  2. 返回的类型是无符号类型sizeof与 比较时-1-1被转换为无符号值,具有高幅度。几乎肯定会比sizeof(int)这个少。

  • @463035818_is_not_a_number:不,`int`的范围需要是-32767到+32767。(C++20 将其加宽 1)。如果“char”被加宽,它可以与“char”具有相同的范围。并且 `sizeof(char)` *必须*为 1。 (2认同)