Typy danych i formatowanie
Transkrypt
Typy danych i formatowanie
Typy danych i formatowanie Elwira Wachowicz [email protected] 28 marca 2013 Elwira Wachowicz ([email protected]) Typy danych i formatowanie 28 marca 2013 1 / 16 Sªowa kluczowe typów danych Pierwotne sªowa C int long short unsigned char float double Elwira Wachowicz ([email protected]) ANSI C signed void const Typy danych i formatowanie 28 marca 2013 2 / 16 Korzystanie ze znaków: typ char Do przechowywania znaków sªu»y typ ASCII. (Np. liter¦ A reprezentuje kod Deklarowanie zmiennych typu char. 65.) To typ caªkowity: przechowuje kody char: char t; char akter, yzma; Inicjalizacja: char kot; kot = 'T' kot = T kot = "T" /* /* /* /* Elwira Wachowicz ([email protected]) deklarujemy zmienn¡ typu char OK! NIE! Uznaje T za zmienn¡ NIE! Uznaje T za ªa«cuch Typy danych i formatowanie */ */ */ */ 28 marca 2013 3 / 16 Sekwencje steruj¡ce Sekwencja \a \b \f \n \r \t \v \\ \' \ Znaczenie Alarm np. d¹wi¦k. Znak cofania: kursor o jeden znak w lewo. Wysuni¦cie strony: kursor na pocz¡tek nast¦pnej strony. Nowa linia. Powrót karetki: kursor na pocz¡tek tej samej linii. Tabulator poziomy. Tabulator pionowy Lewy uko±nik \. Apostrof '. Cudzysªów . Elwira Wachowicz ([email protected]) Typy danych i formatowanie 28 marca 2013 4 / 16 Wy±wietlanie znaków /* znakkod.c -- wy±wietla znak i odpowiadaj¡cy mu kod */ #include <stdio.h> int main(void) { char ch; } printf("Wpisz jaki± znak.\n"); scanf("%c", &ch); /* u»ytkownik podaje znak */ printf("Kod znaku %c to to %d.\n", ch, ch); return 0 Elwira Wachowicz ([email protected]) Typy danych i formatowanie 28 marca 2013 5 / 16 Liczby zmiennoprzecinkowe Liczba Notacja naukowa Notacja wykªadnicza 1000000000 = 1.0 × 109 = 1.23 × 105 = 3.2256 × 102 = 5.6 × 10−5 = 10e9 = 1.23e5 = 3.2256e2 = 5.6e−5 123000 322.56 0.000056 Wedªug ANSI C: float: co najmniej 6 cyfr znacz¡cych i zakres co najmniej od 10+37 . typu double: co najmniej 10 cyfr znacz¡cych i ten sam zakres co float. Zmienna typu 10−37 do Zmienna Elwira Wachowicz ([email protected]) Typy danych i formatowanie 28 marca 2013 6 / 16 Deklarowanie zmiennych zmiennoprzecinkowych i ten sam zakres co float float pawel, gawel; double trouble; float planck = 6.63e-34; Staªe zmiennoprzecinkowe: -1.56E+12 2.87e-3 3.14159 .2 4e16 .8E-5 100. Elwira Wachowicz ([email protected]) Typy danych i formatowanie 28 marca 2013 7 / 16 Wy±wietlanie warto±ci zmiennoprzecinkowych /* pokaz_fl.c -- wyswietla warto±¢ typu float na dwa sposoby */ #include <stdio.h> int main(void) { float wartosc = 32000.0; } printf("%f mo»na tak»e zapisa¢ %e\n", wartosc, wartosc); return 0; Wynik dziaªania programu: 32000.0 mo»na tak»e zapisa¢ 3.200000e+004 Elwira Wachowicz ([email protected]) Typy danych i formatowanie 28 marca 2013 8 / 16 a«cuchy znakowe i formatowanie wej±cie/wyj±cie /* rozmowa.c -- wscibski, ale i pouczaj¡cy program #include <stdio.h> #include <string.h> /* potrzebne do prototypu strlen() #define GESTOSC 998.5 /* g¦sto±¢ czªowieka w kg/m3 int main(void) { float waga, objetosc; int rozmiar, litery; char imie[40]; /* imi¦ jest tablic¡ 40 znaków } */ */ */ */ printf("Cze±¢, jak masz na imi¦? \n"); scanf("%s", imie) printf("%s, ile wynosi Twoja waga w kilogramach? \n", imie); scanf("%f", &waga); rozmiar = sizeof imie; litery = strlen(imie); objetosc = waga / GESTOSC; printf("A wi¦c, %s, Twoja obj¦to±¢ to %4.4f m^3.\n", imie, objetosc); printf("Poza tym, Twoje imi¦ skªada si¦ z %d liter.\n", litery); printf("i mam %d bajtów, aby je przechowa¢.\n", rozmiar); return 0; Elwira Wachowicz ([email protected]) Typy danych i formatowanie 28 marca 2013 9 / 16 a«cuchy znakowe i tablice a«cuch znakowy: ci¡g skªadaj¡cy si¦ z jednego lub wi¦cej znaków. Przykªad: "Czuªem si¦ jak pies na ªa«cuchu." Znak zerowy: znak o kodzie ASCII równym 0, oznacza koniec ªa«cucha. Tablica: uporz¡dkowany ci¡g danych jednego typu. char imie[40]; Elwira Wachowicz ([email protected]) Typy danych i formatowanie 28 marca 2013 10 / 16 Korzystanie z ªa«cuchów /* chwal_1.c -- wykorzystuje ªa«cuchy */ #include <stdio.h> #define POCHWALA "Ach, jakie wspaniaªe imi¦!" int main(void) { char imie[40]; } printf("Jak masz na imi¦?\n"); scanf("%s", imie); printf("Witaj, %s, %s\n", imie, POCHWALA); return 0; Przebieg dziaªania: Jak masz na imi¦? Janek Scalak Witaj, Janek. Ach, jakie wspaniaªe imi¦! Uwaga: scanf() dziaªa, dopóki nie napotka znaku niedrukowanego typu spacja, tabulator lub znak nowej linii. Elwira Wachowicz ([email protected]) Typy danych i formatowanie 28 marca 2013 11 / 16 Funkcja strlen() /* chwal_2.c -- wykorzystuje ªa«cuchy */ #include <stdio.h> #include <string.h> /* potrzebne do prototypu strlen() */ #define POCHWALA "Ach, jakie wspaniaªe imi¦!" int main(void) { char imie[40]; } printf("Jak masz na imi¦?\n"); scanf("%s", imie); printf("Witaj, %s, %s\n", imie, POCHWALA); printf("Twoje imi¦ skªadaj¡ce si¦ z %d liter, zajmuje %d komórek pami¦ci.\n", strlen(imie), sizeof imie); printf("Pochwaªa skªada si¦ z %d liter ", strlen(POCHWALA)); printf("i zajmuje %d komórek pami¦ci.\n", sizeof POCHWALA); return 0; Przebieg dziaªania: Jak masz na imi¦? Elwira Witaj, Elwira, Ach, jakie wspaniaªe imi¦! Twoje imi¦ skªadaj¡ce si¦ z 6 liter, zajmuje 40 komórek pami¦ci. Pochwaªa skªada si¦ z 28 liter i zajmuje 29 komórek pami¦ci. Elwira Wachowicz ([email protected]) Typy danych i formatowanie 28 marca 2013 12 / 16 Staªe Staªe symboliczne: W wyra»eniach wygodniej korzysta¢ z nazwy ni» liczb (np.: pi zamiast 3.14159). atwiej zmieni¢ warto±¢ staªej w jednym miejscu w programie. Gdy zdeniowana w nagªówku, w czasie kompilacji jest podstawiana warto±¢. #define NAZWA wartosc Elwira Wachowicz ([email protected]) Typy danych i formatowanie 28 marca 2013 13 / 16 Staªe standardowe Pliki nagªówkowe limits.h i float.h zawieraj¡ denicje zakresów liczb typów caªkowitych i zmiennoprzecinkowych. printf("Maksymalna warto±¢ typu int w tym systemie = %d", INT_MAX); Staªa CHAR_BIT SHRT_MAX SHRT_MIN USHRT_MAX INT_MAX INT_MIN UINT_MAX LONG_MAX ULONG_MAX FLT_MANT_DIG FLT_DIG FLT_MIN_10_EXP FLT_MAX FLT_EPSILON Znaczenie Rozmiar typu char w bitach Maksymalna warto±¢ typu short Minimalna warto±¢ typu short Maksymalna warto±¢ typu unsigned short Maksymalna warto±¢ typu int Minimalna warto±¢ typu int Maksymalna warto±¢ typu unsigned int Maksymalna warto±¢ typu long Maksymalna warto±¢ typu unsigned long Rozmiar mantysy typu float Minimalna liczba dziei¦tnych cyfr znacz¡cych dla typu float Minimalny ujemny wykªadnik typu float (podstaw¡ jest 10) Maksymalna dodatnia warto±¢ typu float Ró»nica mi¦dzy 1.00 a najmniejsz¡ warto±ci¡ typu float wi¦ksz¡ od Elwira Wachowicz ([email protected]) Typy danych i formatowanie 1.00 28 marca 2013 14 / 16 Funkcja printf() Ogólna posta¢ instrukcji printf(): printf(ªa«cuch-steruj¡cy, element1, element2, ....) Elwira Wachowicz ([email protected]) Typy danych i formatowanie 28 marca 2013 15 / 16 a«cuch steruj¡cy Specykator %c %d %e %E %f %g %E %o %p %s %u %x %X %% Dane wyj±ciowe Pojedynczy znak Dziesi¦tna liczba caªkowita ze znakiem Liczba zmiennoprzecinkowa w notacji z liter¡ e Liczba zmiennoprzecinkowa w notacji z liter¡ E Liczba zmiennoprzecinkowa w zapisie dziesi¦tnym Równowa»ny %e, gdy wykªadnik mniejszy ni» −4 lub wi¦kszy/równy dokªadno±ci, inaczej %f Jak wy»ej, tyle »e z E Ósemkowa liczba caªkowita bez znaku wska¹nik a«cuch znakowy Dziesi¦tna liczba caªkowita bez znaku Szesnastkowa liczba caªkowita, cyfry szesnastkowe maª¡ liter¡ (0f) Szesnastkowa liczba caªkowita, cyfry szesnastkowe du»¡ liter¡ (0F) Wy±wietla znak procentu Elwira Wachowicz ([email protected]) Typy danych i formatowanie 28 marca 2013 16 / 16