sizeof的返回值类型:size_t

简介: sizeof返回值类型是 size_t ,size_t 是无符号整数类型

一、sizeof是什么


如题,sizeof是一个操作符,且是单目操作符


二、sizeof返回值类型


sizeof返回值类型是 size_t ,size_t 是无符号整数类型


三、sizeof的使用


1.计算数据类型的大小(单位:字节)

printf("%zd\n", sizeof(short));
printf("%zd\n", sizeof(int));
printf("%zd\n", sizeof(long));
printf("%zd\n", sizeof(long long));
printf("%zd\n", sizeof(float));
printf("%zd\n", sizeof(double));

1f4ef83453124d8f3c26faba75c720e9_33e2e4f3458d4dd2b2f06f35a631c4a9.png

2.也可以直接计算变量的大小,此时 sizeof 的括号可省略

int a = 10;
double b = 3.14;
printf("%zd\n", sizeof(a));
printf("%zd\n", sizeof b );

19bb2a3a8ff941750f0854735f4e1ee4_f33aed99d711408e9ce9b4941276c0cf.png

四、关于size_t


以一例题入手,求运行结果


#include <stdio.h>
int i;
int main()
{
    i--;
    if (i > sizeof(i))
    {
        printf(">\n");
    }
    else
    {
        printf("<\n");
    }
    return 0; 
}


分析:1.全局变量 i 未初始化,则默认初始化为0


          2.i --后,i 等于 -1


          3.sizeof(i)等于4,但是无符号整数


          4.整型-1 与 无符号整型 4 比较大小,需要进行算数转换:将整型-1转换为无符号整型


如何算数转换:补码的最高位成为有效位,不再是符号位


-1的原码:10000000 00000000 00000000 00000001


      补码:11111111 11111111 11111111 11111111


算数转换后补码:11111111 11111111 11111111 11111111


                 原码:11111111 11111111 11111111 11111111


十进制为 4,294,967,295  大于 4


所以最终程序运行结果为 >

目录
相关文章
C++ --- error C2664: “LoadLibraryW”: 不能将参数 1 从“const char *”转换为“LPCWSTR”
C++ --- error C2664: “LoadLibraryW”: 不能将参数 1 从“const char *”转换为“LPCWSTR”
264 0
|
4月前
详细解读C++char类型函数
详细解读C++char类型函数
36 0
|
4月前
|
C++
E0144 “const char *“ 类型的值不能用于初始化 “char *“ 类型的实体
E0144 “const char *“ 类型的值不能用于初始化 “char *“ 类型的实体
|
5月前
|
存储 安全 编译器
C/C中sizeof和strlen函数的实现:详细解析sizeof和strlen函数的实现机制、参数说明和使用技巧
C/C中sizeof和strlen函数的实现:详细解析sizeof和strlen函数的实现机制、参数说明和使用技巧
41 1
|
5月前
printf函数的返回值
printf函数的返回值
30 0
|
存储
关于char类型数组的两种输出方法
关于char类型数组的两种输出方法
257 0
printf 函数的返回值问题
printf 函数的返回值问题
111 0
printf 函数的返回值问题
error C2664: “StrCmpW”: 不能将参数 2 从“const char [12]”转换为“PCWSTR”
error C2664: “StrCmpW”: 不能将参数 2 从“const char [12]”转换为“PCWSTR”
113 0
|
编译器 C语言 C++
C/C++ 中的 sizeof 运算符和 size_t 类型
C/C++ 中的 sizeof 运算符和 size_t 类型