ТЕМА 3: Типове данни Целочислен тип данни
I. Типове данни
1. Характеристики
Типовете данни представляват множества (диапазони) от стойности, които имат еднакви характеристики.
C# е език със строг контрол на типовете данни.
Типовете данни се характеризират с:
- Име – например int;
- Размер (колко памет заемат) – например 4 байта;
- Стойност по подразбиране (default value) – например 0.
2. Видове
Базовите типове данни в C# се разделят на следните видове:
- Целочислени типове – sbyte, byte, short, ushort, int, uint, long, ulong;
- Реални типове с плаваща запетая – float, double;
- Реални типове с десетична точност – decimal;
- Булев тип – bool;
- Символен тип – char;
- Символен низ (стринг) – string;
- Обектен тип – object.
Тези типове данни се наричат примитивни (built-in types), тъй като са вградени в езика C# на най-ниско ниво. В таблицата по-долу можем да видим изброените по-горе типове данни, техният обхват и стойностите им по подразбиране:
Тип данни |
Стойност по подразбиране |
Минимална стойност |
Максимална стойност |
sbyte |
0 |
-128 |
127 |
byte |
0 |
0 |
255 |
short |
0 |
-32768 |
32767 |
ushort |
0 |
0 |
65535 |
int |
0 |
-2147483648 |
2147483647 |
uint |
0u |
0 |
4294967295 |
long |
0L |
-9223372036854775808 |
9223372036854775807 |
ulong |
0u |
0 |
18446744073709551615 |
float |
0.0f |
±1.5×10-45 |
±3.4×1038 |
double |
0.0d |
±5.0×10-324 |
±1.7×10308 |
decimal |
0.0m |
±1.0×10-28 |
±7.9×1028 |
boolean |
false |
Възможните стойности са две – true или false |
|
char |
‘\u0000′ |
‘\u0000′ |
‘\uffff’ |
object |
null |
- |
- |
string |
null |
- |
- |
II. Целочислен тип данни
1. Целочислените типове
Целочислените типове отразяват целите числа.
Те са sbyte, byte, short, ushort, int, uint, long и ulong.
Тип | Размер (В) | Обхват | Пример |
sbyte | 1 | –128 до 127 | sbyte sb = -12; |
byte | 1 | 0 до 255 | byte b = 12; |
short | 2 | –32,768 до 32,767 | short sn = -123; |
ushort | 2 | 0 до 65,535 | ushort usn = 123; |
int | 4 | –2,147,483,648 до 2,147,483,647 | int n = 123; |
uint | 4 | 0 до 4,294,967,295 | uint un = 123U; |
long | 8 | –9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 | long l = 123L; |
ulong | 8 | 0 до 18,446,744,073,709,551,615 | long ul = 123UL; |
2. Максимална и минимална стойност на различните целочислени типове
Използват се характеристиките MaxValue и MinValue
а) sbyte е 8-битов целочислен тип със знак (signed integer)
Стойността по подразбиране е числото 0.
SByte.MaxValue = 127 (27-1)
SByte.MinValue = -128 (-27)
б) byte е 8-битов беззнаков (unsigned)
Byte.MaxValue = 255 (28-1).
Byte.MinValue = 0
в) short е 16-битов тип със знак
Int16.MaxValue = 32767 (215-1).
Int16.MinValue = -32768 (-215)
г)ushort е 16-битов беззнаков тип
UInt16. MaxValue = 65535 (216-1).
UInt16.MinValue = 0
д) int е 32- битов знаков тип
Int32.MaxValue = 2 147 483 647 (231-1)
Int32.MinValue = -2 147 483 648 (-231)
е) uint е 32-битов беззнаков тип
Стойността по подразбиране е числото 0.
UInt32.MaxValue = 4 294 967 295 (232-1)
UInt32.MinValue = 0
ж) long е 64-битов знаков тип със стойност по подразбиране 0l или 0L
Int64.MaxValue = 9 223 372 036 854 775 807 (263-1)
Int64.MinValue = -9 223 372 036 854 775 808 (-263)
з) ulong е 64-битов беззнаков тип със стойност по подразбиране е числото 0u или 0U
UInt64.MaxValue = 18 446 744 073 709 551 615 (264-1)
UInt64.MinValue = 0
3. Примери и задачи:
Пример 1:
При кликване върху команден бутон button1 да се изведе в label1.Text колко години, дни и часове има в този брой векове, който предварително е зададен в textBox1.Text. В label1.Text да се изведе най-голямото цяло число (целочислен тип ulong).
private void button1_Click(object sender, EventArgs e)
{
short centuries = 20;
centuries = Convert.ToInt16(textBox1.Text);
ushort years = 2000;
uint days = 730480;
ulong hours = 17531520;
label1.Text=(centuries + " века са " + years +
" години или " + days + " дни или " + hours + " часове.");
ulong maxIntValue = UInt64.MaxValue;
label2.Text="Най-голямо цяло число: "+maxIntValue; // 18446744073709551615
}
Пример 2:
Да се изчертае команден бутон button1, текстово поле textBox1, и етикети label1, label2 и label3. В textBox1.Text да се запише брой секунди и при кликване върху команден бутон button1 да се изведе колко дни (label1), часове (label2) и минути (label3) има в този брой секунди. Да се поставят подходящи надписи в 4 етикета label4, label5, label6, label7, в които да се посочи къде се извеждат секунди, минути, часове и дни.
private void button1_Click(object sender, EventArgs e)
{
uint seconds, minutes, hours, days;
seconds = Convert.ToUInt32(textBox1.Text);
minutes = seconds / 60;
hours = minutes / 60;
days = hours / 24;
label1.Text = Convert.ToString(minutes);
label2.Text = Convert.ToString(hours);
label3.Text = Convert.ToString(days);
}
Задача 1:
Ако електронен часовник показва 00:00:00, то след брой секунди, посочени в текстово поле, какво ще е изписано на електронния часовник. Да се изчертае подходящ интерфейс.