Typ znakowy
Z Wikipedii
Typ znakowy – jeden z podstawowych typów danych w wielu językach programowania, mający na celu przechowywanie pojedynczego znaku tekstu.
W językach C i C++ typ ten jest po prostu jednobajtową liczbę całkowitą (może być ona ze znakiem, w przypadku signed char; lub bez znaku, dla unsigned char; w przypadku nie podania kwalifikatora signed/unsigned rodzaj liczby zależy od implementacji). W Pascalu natomiast typ znakowy nie jest typem liczbowym (do konwersji używa się funkcji Chr lub Asc). Wewnętrznie jednak znak jest zawsze reprezentowany przez jego kod, w zależności od implementacji będzie to ASCII, EBCDIC, Unicode itp. Zapis konkretnej wartości typu znakowego w kodzie źródłowym dokonuje się za pomocą literału znakowego.
Spis treści |
[edytuj] Typy znakowe w językach programowania
[edytuj] Przykłady zastosowań
[edytuj] Przykład w C
Przykładowe działania na zmiennej typu char:
#include <stdio.h>
// funkcja pomocnicza - wartość bezwzględna
char abs(char cChar)
{
if (cChar >= 0)
{
return cChar;
}
return -cChar;
}
int main()
{
char cZnak;
cZnak = 'a';
// widzimy, że znak jest zapisany jako liczba.
printf("Znak %c = %d.\n", cZnak, cZnak);
// prosta operacja:
cZnak+= 4; // zwiększenie znaku o 4
printf("Po zwiększeniu o 4, znak %c = %d.\n", cZnak, cZnak);
// różnica dwóch znaków:
char cZnak2 = 'o';
printf("między znakami %c (%d) a %c (%d) jest %d różnicy.\n",
cZnak, cZnak, cZnak2, cZnak2, abs(cZnak - cZnak2));
// inne zastosowanie typu char (proste obliczenia arytmetyczne):
for (unsigned char i=0; i<16; ++i)
{
printf("%d * %d + 2 = %d\n", i, i, i * i + 2);
}
}
Wynik działania:
Znak a = 97. Po zwiększeniu o 4, znak e = 101. Między znakami e (101) a o (111) jest 10 różnicy. 0 * 0 + 2 = 2 1 * 1 + 2 = 3 2 * 2 + 2 = 6 3 * 3 + 2 = 11 4 * 4 + 2 = 18 (...)
[edytuj] Przykład w Fortranie
Przykład (zmienna buffer o długości 128 B):
character*(128) buffer buffer = 'abc' l = len(buffer) buffer = buffer(:l) + 'cdef ' l = len(buffer) buffer = buffer(:3) // ' xyx ' // buffer(4:) // ' pqr ' print *, '#' // buffer(:len(buffer))// '#'
Wynik działania - na ekranie zobaczymy:
#abc xyx cdef pqr #
Powyżej wykorzystano:
- standardową funkcję len określającą pozycję od lewej ostatniego znaku różnego od NUL (chcąc odrzucić końcowe spacje należy użyć funkcji len_trim)
- tworzenie wycinka zmiennej var typu character:
- znaki nr m do n (włącznie): var(m:n)
- od początku do nr n włącznie: var(:n)
- od znaku nr m do końca: var(m:)
- konkatenację łańcuchów: operator // lub +
Typy podstawowe: bool • char • double • float • int • void
Typy złożone: class • enum • struct • tablica • union • wskaźnik
| Festiwal im. Najdorfa: Sasikiran wciąż niepokonany |
|
Reprezentant Indii Krishnan Sasikiran, z dorobkiem 5 punktów po sześciu rundach, pozostaje liderem turnieju A Mazowieckiego Festiwalu Szachowego im. Mieczysława Najdorfa, który odbywa się w Warszawie.
|
| 25 milionów euro za zawodnika Realu |
|
Chelsea Londyn zamierza sprowadzić zawodnika Realu Madryt, Brazylijczyka Robinho. Wcześniej sam zawodnik wyraził chęć przeniesienia się na Stamford Bridge.
|
| Sparingowa porażka Wojasa Podhale |
|
W sparingowym meczu w słowackim Dolnym Kubinie hokeiści Wojasa Podhale Nowy Targ przegrali z ekstraligowym MHK Ski Park Kezmarok 1:2. Rewanż we wtorek w Kieżmarku.
|
| Pekin 2008: Nowitzki chorążym Niemiec, Jasikevicius Litwy |
|
Gwiazdy światowej koszykówki Niemiec Dirk Nowitzki (Dallas Mavericks) i Litwin Sarunas Jasikevicius (Panathinaikos Ateny) poniosą flagi swoich reprezentacji podczas piątkowej uroczystości otwarcia igrzysk w Pekinie.
|
| ME U-20: złoto i srebro Polaków |
|
Michał Kądzioła i Jakub Szałankiewicz zdobyli we włoskim San Salvo tytuł mistrzów Europy w siatkówce plażowej zawodników do lat 20. W finale wygrali z holenderską parą Brouwer - Varenhorst 2:1 (21:12, 14:21, 15:12).
|