Как я могу решить мой код, чтобы проверить размер типа данных (это язык C с компилятором GCC) на 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));
}
затем скомпилировал это шоу, обнаружил сбой.
1 ответ
Решение
sizeof
дает результат типа size_t
, Вы должны использовать %zu
спецификатор формата для печати результата.
Используя несоответствующий тип аргументов, (например: %d
который ожидает int
с результатом sizeof
который нуждается в %zu
) вызывает неопределенное поведение.
После этого, void main ()
довольно устаревшая подпись для размещенной среды, вы должны по крайней мере использовать int main (void)
быть соответствующим.
Тем не менее, я считаю, что ваша программа не аварийно завершилась, вы не запустили бинарный файл, вы только что собрали его, и компилятор выдал предупреждения для вашего же блага. Спасибо, что не игнорировали их.