我如何在 linux mint 上解决我的代码以检查数据类型的大小(是带有 gcc 编译器的 c 语言)

How can i solve my code to check size of data type (is c language with gcc compiler) on linux mint

我正在 linux 上编写我的代码并使用 gcc 编译器。

#include <stdio.h>

void main () {
        printf("Data Types                  Size(bytes)\n");
        printf("=======================================\n");
        printf("char                        %2d\n", sizeof(char));
        printf("unsigned char               %2d\n", sizeof(unsigned char));
        printf("signed char                 %2d\n", sizeof(signed char));
        printf("int                         %2d\n", sizeof(int));
        printf("unsigned int                %2d\n", sizeof(unsigned int));
        printf("unsigned long int           %2d\n", sizeof(unsigned long int));
        printf("unsigned short int          %2d\n", sizeof(unsigned short int));
        printf("signed int                  %2d\n", sizeof(signed int));
        printf("short int                   %2d\n", sizeof(short int));
        printf("signed short int            %2d\n", sizeof(signed short int));
        printf("long int                    %2d\n", sizeof(long int));
        printf("signed long int             %2d\n", sizeof(signed long int));
        printf("float                       %2d\n", sizeof(float));
        printf("double                      %2d\n", sizeof(double));
        printf("long double                 %2d\n", sizeof(long double));
}

然后编译它显示检测到崩溃。

sizeof 产生 size_t 类型的结果,您必须使用 %zu 格式说明符来打印结果。

使用不匹配的参数类型,(例如:%d 需要 int,结果为 sizeof,需要 %zu)调用 undefined behavior .

在那之后,void main () 对于托管环境来说是一个相当过时的签名,您至少应该使用 int main (void) 来保持一致。

也就是说,我相信,你的程序没有崩溃,你没有运行二进制文件,你是就在编译过程中,编译器为了您的利益发出了警告。感谢您没有忽略他们。