* Преобразуване на типове, размер на данни
Публикувано на 24 октомври 2008 в раздел С/С++.
I. Преобразуване на типове:
Гъвкавостта на езика С се подсилва от възможността за преобразуване на един тип данни в друг:
(тип) операнд
Пример:
double x = 15.5; // Следното ще доведе до: // warning C4244: 'initializing' : conversion from // 'double' to 'int', possible loss of data int y = x; // Когато укажем преобразуването явно този warning изчезва: int z = (int)x;
Трябва да споменем, че почти всички компилатори преобразуват типовете данни сами, когато това е необходимо. Например въпреки даденото предупреждение нашата програма няма да спре изпълнението си. Въпреки това е препоръчително сами да се грижим за тези ситуации.
II. Операция за размер на данни:
В редица случаи се налага да работим с данни, на които не им знаем предварително големината. За да я определим се използва операторът sizeof:
sizeof(операнд)
Като операнд може да се използува променлива от всеки валиден за езика израз, включително структури. Например следната програма ще изведе размерите на различните типове данни:
char c;
int i=100;
printf("%d", sizeof(c));
printf("%d", sizeof(i));
printf("%d", sizeof(float));
printf("%d", sizeof(double));
Ще забележите, че връщания резултат е винаги броя байтове които са или биха били заделени за подадената променлива.
Най-често операцията за размер на данни се използва при определянето на броя на елементите на масив:
// Заделя се памет за пет елемента от тип int
int arr[5];
// sizeof(arr) ще върне броя байтове заделени за целия масив,
// а sizeof(int) само на типа данни int
int arrlength = sizeof(arr)/sizeof(int);
printf("%d", arrlength);
Когато пишем функции, приемащи масиви като параметър, е добре да използваме точно този подход. Така нашия код ще бъде преносим и няма да зависи от "магически числа".
Добави коментар