C, PHP, VB, .NET

Дневникът на Филип Петров


* Преобразуване на типове, размер на данни

Публикувано на 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);

Когато пишем функции, приемащи масиви като параметър, е добре да използваме точно този подход. Така нашия код ще бъде преносим и няма да зависи от "магически числа".

 



Добави коментар

Адресът на електронната поща няма да се публикува


*