我如何在 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)
来保持一致。
也就是说,我相信,你的程序没有崩溃,你没有运行二进制文件,你是就在编译过程中,编译器为了您的利益发出了警告。感谢您没有忽略他们。
我正在 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)
来保持一致。
也就是说,我相信,你的程序没有崩溃,你没有运行二进制文件,你是就在编译过程中,编译器为了您的利益发出了警告。感谢您没有忽略他们。