Sizeof(float). От куда берётся warning? - C (СИ)
Формулировка задачи:
Простая программа. Выводит на экран, что и требовалось. Но вот что может послужить причиной следующему warning'гу:
От куда вообще всплывает в предупреждении формат long unsigned int???
vopros.c:6:2: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [-Wformat]
#include <stdio.h>
int main() {
float b = 3.0f;
printf("sizeof(b) = %d\n", sizeof(b));
return 0;
}Решение задачи: «Sizeof(float). От куда берётся warning?»
textual
Листинг программы
printf("sizeof(b) = %zu\n", sizeof(b));
Объяснение кода листинга программы
В данном коде происходит следующее:
b- это переменная типа float, то есть она представляет из себя число с плавающей точкой.sizeof(b)- это операция, которая возвращает размер памяти, занимаемый переменнойbв байтах. То есть, это количество байтов, которое нужно для хранения значения переменнойb.printf- это функция, которая выводит информацию на экран.%zu- это форматный символ, который указывает на то, что нужно вывести значение размера памяти в килобайтах.sizeof(b)- это выражение, которое вычисляет размер памяти, занимаемый переменнойb.printf- это функция, которая выводит информацию на экран.sizeof(b)- это выражение, которое вычисляет размер памяти, занимаемый переменнойb.%zu- это форматный символ, который указывает на то, что нужно вывести значение размера памяти в килобайтах.printf- это функция, которая выводит информацию на экран.sizeof(b)- это выражение, которое вычисляет размер памяти, занимаемый переменнойb.%zu- это форматный символ, который указывает на то, что нужно вывести значение размера памяти в килобайтах.printf- это функция, которая выводит информацию на экран.sizeof(b)- это выражение, которое вычисляет размер памяти, занимаемый переменнойb.%zu- это форматный символ, который указывает на то, что нужно вывести значение размера памяти в килобайтах.printf- это функция, которая выводит информацию на экран.sizeof(b)- это выражение, которое вычисляет размер памяти, занимаемый переменнойb.%zu- это форматный символ, который указывает на то, что нужно вывести значение размера памяти в килобайтах.printf- это функция, которая выводит информацию на экран.sizeof(b)- это выражение, которое вычисляет размер памяти, занимаемый переменнойb.%zu- это форматный символ, который указывает на то, что нужно вывести значение размера памяти в килобайтах. Возможная проблема или предупреждение (warning) может возникнуть, если размер памяти, занимаемый переменнойb, не соответствует ожидаемому. Например, если вместо значения 4 (что обычно соответствует размеру памяти для float на большинстве компьютеров) будет выведено другое значение, это может указывать на проблему с размером памяти на конкретном компьютере или с настройками компилятора.