* Преобразуване на типове, размер на данни
Публикувано на 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);
Когато пишем функции, приемащи масиви като параметър, е добре да използваме точно този подход. Така нашия код ще бъде преносим и няма да зависи от "магически числа".
Добави коментар