BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky

Podobné dokumenty
BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky

Paměť počítače. alg2 1

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

- jak udělat konstantu long int: L long velka = 78L;

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Algoritmizace a programování

Racionální čísla, operátory, výrazy, knihovní funkce

MQL4 COURSE. By Coders guru -3 DATA TYPES. Doufám, že předchozí lekce SYNTAX se vám líbila. V té jsme se pokoušeli zodpovědět:

BI-PA1 Programování a Algoritmizace 1. Miroslav Baĺık, Ladislav Vagner a Josef Vogel. 10., 12. a 13. října 2017

Formátové specifikace formátovací řetězce

Racionální čísla, operátory, výrazy, knihovní funkce

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Formátová specifikace má tvar (některé sekce nemají smysl pro načítání) %

3 Jednoduché datové typy Interpretace čísel v paměti počítače Problémy s matematickými operacemi 5

Java reprezentace dat, výrazy. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické

Programovací jazyk Pascal

Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr)

Úvod do programování. Lekce 1

Jazyk C++, některá rozšíření oproti C

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Funkce, intuitivní chápání složitosti

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Principy počítačů I Reprezentace dat

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Informatika Datové formáty

Algoritmizace a programování

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Úvod do programovacích jazyků (Java)

Číselné soustavy. Ve světě počítačů se využívají tři základní soustavy:

Základy jazyka C. Základy programování 1 Tomáš Kühr

Struktura a architektura počítačů (BI-SAP) 5

BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky

Úvod do programování 6. hodina

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Nastavovací příručka pro snímače CCD

Standardní vstup a výstup

Programování v jazyce JavaScript

Základy algoritmizace a programování

IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

Algoritmy a datové struktury

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Referenční příručka o čárovém kódu

CODEWARE. Nastavovací příručka. pro snímače CipherLab 1500/1560/1562

VISUAL BASIC. Práce se soubory

Lekce 9 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

Proměnná a její uložení v paměti

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky

Čísla a číselné soustavy.

Jazyk C práce se soubory. Jan Hnilica Počítačové modelování 16

Základní jednotky používané ve výpočetní technice

Lekce 6 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

Reprezentace dat v informačních systémech. Jaroslav Šmarda

ČÍSELNÉ SOUSTAVY PŘEVODY

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Programování v jazyce C pro chemiky (C2160) 9. Práce s PDB soubory

PROGRAMOVÁNÍ V JAZYCE C V PŘÍKLADECH 11 Dynamické datové struktury 11.1 Spojové struktury Příklad PROG_

Algoritmizace prostorových úloh

Algoritmizace a programování

Algoritmizace a programování

Základy programování (IZP)

Algoritmy I. Číselné soustavy přečíst!!! ALGI 2018/19

Základy algoritmizace a programování

Y36SAP. Osnova. Číselné soustavy a kódy, převody, aritmetické operace Y36SAP Poziční číselné soustavy a převody.

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy

Znaky. IAJCE Přednáška č. 10. každému znaku je nutné přiřadit nějaké číslo (nezáporné přímé mapování znak <->

NPRG030 Programování I, 2016/17 1 / :58:13

Úvod do programování 7. hodina

Datové typy pro reálná čísla

Jazyk C# a platforma.net

7. Datové typy v Javě

Sada 1 - Základy programování

Kódováni dat. Kódy používané pro strojové operace

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

C2115 Praktický úvod do superpočítání

Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr)

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Výrazy, operace, příkazy

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

NPRG030 Programování I, 2010/11

Soubory. Hung Hoang Dieu. Department of Mathematics Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague 1 / 7

Vstup a výstup datové proudy v C

Základy jazyka C. Úvod do programování 1 Tomáš Kühr

Programování v jazyce C pro chemiky (C2160) 12. Specifické problémy při vývoji vědeckého softwaru

IUJCE 07/08 Přednáška č. 1

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Principy počítačů. Prof. RNDr. Peter Mikulecký, PhD.

REPREZENTACE DAT. Principy počítačů I. Literatura. Literály. Typy dat. Literály. Čísla Instrukce. Znaky. Logické hodnoty

Algoritmizace prostorových úloh

Transkript:

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Vstup, výstup BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík Fakulta informačních technologií České vysoké učení technické v Praze

Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače. Data jsou v paměti reprezentována posloupnostmi bitů (bit = binary digit - 0 nebo 1). Připomeňme: paměť je tvořena řadou 8-mi bitových paměťových míst nazývaných bajt (z angl. byte, česky též byte, slabika či oktet). rozlišujeme vnitřní (operační) paměť a vnější paměť (např. disk) každé paměťové místo vnitřní paměti má svou adresu (nezáporné celé číslo), která slouží pro jeho identifikaci kapacita paměti se udává v MB (1 MB = 1000000 B) nebo GB (1 GB = Mld. B) ČSN IEC 60027-2 (rok 1998) 1 Kibibyte=KiB=1024B, 1MiB, 1GiB Instrukce strojového jazyka předepisují aritmetické, logické a jiné operace s posloupnostmi bitů bez ohledu na to, jaká data posloupnost bitů reprezentuje. Ing. Miroslav Balík, Ph.D. - BI-PA1-02 2/29

Datové typy Při návrhu algoritmů a psaní programů ve vyšších programovacích jazycích abstrahujeme od binární podoby paměti počítače S daty pracujeme jako s hodnotami různých datových typů, které jsou uloženy v datových objektech. Datový typ ( zkráceně jen typ ) specifikuje: množinu hodnot množinu operací, které lze s hodnotami daného typu provádět Příklad typu: celočíselný typ int v jazyku C: množinou hodnot ve 32-bitovém prostředí jsou celá čísla z intervalu -2147483648.. 2147483647 (proč?) množinu operací tvoří: aritmetické operace +, -, *, /, jejichž výsledkem je hodnota typu int relační operace ==,!=, >, >=, <, <=, jejichž výsledkem je hodnota typu int a další Typ int je jednoduchý typ, jehož hodnoty jsou atomické ( z hlediska operací dále nedělitelné ) Ing. Miroslav Balík, Ph.D. - BI-PA1-02 3/29

Proměnné, přiřazení, výpis hodnoty Proměnná je datový objekt, který je označen jménem a je v něm uložena hodnota nějakého typu, která se může měnit alfa 0 hodnota proměnné jméno proměnné datový objekt V jazyku C zavedeme výše uvedenou proměnnou deklarací int alfa = 0; Hodnotu proměnné lze změnit přiřazovacím příkazem alfa alfa = 37; 0 alfa 37 Hodnotu této proměnné typu int lze v jazyku C vypsat (s přechodem na nový řádek) příkazem: proměnná, jejíž hodnota se vypíše printf( %d\n, alfa); celočíselná dekadická konverze Ing. Miroslav Balík, Ph.D. - BI-PA1-02 4/29

Ing. Miroslav Balík, Ph.D. - BI-PA1-02 5/29 Proměnné, přiřazení, výpis hodnoty Vyzkoušejme to /* prog2-1a.c */ int main(void) deklarace lokální proměnné { int alfa = 0; příkaz výstupu printf("%d\n", alfa); alfa = 37; přiřazovací příkaz printf("%d\n", alfa);

Ing. Miroslav Balík, Ph.D. - BI-PA1-02 6/29 Proměnné, přiřazení, výpis hodnoty A co když lokální proměnnou deklarujeme bez inicializace? /* prog2-1b.c */ int alfa; /* nema definovanou hodnotu */ printf("%d\n", alfa); alfa = 37; printf("%d\n", alfa); Co program vypíše? A jak to bude v cintr?

Ing. Miroslav Balík, Ph.D. - BI-PA1-02 7/29 Globální proměnné V jazyku C lze na úrovni souboru (tj. mimo funkci) deklarovat globální proměnné Globální proměnné jsou inicializovány nulou /* prog2-1c.c */ int alfa; /* globalni promenna, inicializace nulou */ /* globalni promennou alfa lze pouzit */ printf("%d\n", alfa); alfa = 37; printf("%d\n", alfa);

Ing. Miroslav Balík, Ph.D. - BI-PA1-02 8/29 Dále k výpisu Před hodnotu proměnné chceme vypsat titulek /* prog2-2a.c */ int alfa = 0; printf("hodnota alfa po deklaraci: "); printf("%d\n", alfa); alfa = 37; printf("hodnota alfa po prirazeni: "); printf("%d\n", alfa); Tyto dva příkazy lze spojit do jednoho

Ing. Miroslav Balík, Ph.D. - BI-PA1-02 9/29 Dále k výpisu Výpis řetězce a hodnoty proměnné jediným příkazem printf /* prog2-2b.c */ int alfa = 0; printf("hodnota alfa po deklaraci: %d\n", alfa); alfa = 37; printf("hodnota alfa po prirazeni: %d\n", alfa);

Ing. Miroslav Balík, Ph.D. - BI-PA1-02 10/29 Výpis hodnoty výrazu Vypisovat můžeme nejen hodnoty proměnných, ale též hodnoty výrazů Příklad: /* prog2-2c.c */ proměnná int alfa = 0; printf("hodnota alfa po deklaraci: %d\n", alfa); alfa = 37; printf("hodnota alfa po prirazeni: %d\n", alfa); printf("hodnota vyrazu alfa+4: %d\n", alfa+4); výraz

Ing. Miroslav Balík, Ph.D. - BI-PA1-02 11/29 Šířka vypsané položky Konverze může obsahovat (mezi znaky % a d) kladné celé číslo udávající šířku vypsané položky, tj. celkový počet vypsaných znaků (zleva se doplní mezery) Příklad: /* prog2-2c.c */ šířka položky int alfa = 0; printf("hodnota alfa po deklaraci: %5d\n", alfa); alfa = 37; printf("hodnota alfa po prirazeni: %5d\n", alfa); printf(" hodnota vyrazu alfa+4: %5d\n", alfa+4);

Ing. Miroslav Balík, Ph.D. - BI-PA1-02 12/29 Vstup čísel typu int Hodnoty proměnných často čteme ze vstupních dat (např. z klávesnice) Pro čtení hodnot z klávesnice použijeme knihovní funkci scanf Příklad čtení čísla typu int: /* prog2-3a.c */ int a; printf("zadejte cele cislo\n"); scanf("%d", &a); printf("zadane cislo je\n"); printf("a=%d\n", a); celočíselná dekadická konverze adresa proměnné, do které se uloží přečtené číslo

Vstup čísel typu int Činnost funkce scanf při konverzi %d: ignoruje počáteční mezery a oddělovače řádků zápis čísla musí začínat znaménkem nebo dekadickou číslicí čtení skončí na prvním znaku, který není dekadickou číslicí musí být přečtena alespoň jedna dekadická číslice Funkce vrací hodnotu, kterou je počet úspěšně přečtených čísel (obecně položek) /* prog2-3a.c */ int a; printf("zadejte cele cislo\n"); scanf("%d", &a); printf("zadane cislo je\n"); printf("a=%d\n", a); Ing. Miroslav Balík, Ph.D. - BI-PA1-02 13/29

Ing. Miroslav Balík, Ph.D. - BI-PA1-02 14/29 Vstup čísel typu int Jedním voláním funkce scanf lze přečíst několik čísel Příklad: /* prog2-3a.c */ int a,b,v; printf("zadejte cela cisla\n"); v = scanf("%d%d", &a,&b); printf("zadana cisla jsou\n"); printf("%d %d %d\n", a,b,v); Vstup: 1 2 Výstup: 1 2 2 Vstup: 1 2 25.7 Výstup: 1 2 2 Vstup: 1 Pepa Výstup: 1?? 1 Vstup: 1-2 Výstup: 1-2 2 Vstup: 9,1-2 Výstup: 9?? 1 Vstup: <eof> Výstup:???? -1

Celočíselné typy označení ekviv. označení B minimální hodnota maximální hodnota int signed int signed 4 2 147 483 648 tj. 2 31 2 147 483 647 tj. 2 31-1 unsigned unsigned int 4 0 4 294 967 295 tj. 2 32-1 short unsigned short long unsigned long short int short signed int unsigned short int long int signed long int signed long unsigned long int 2 32 768 tj. 2 15 32 767 tj. 2 15-1 2 0 65 535 tj. 2 16-1 4 2 147 483 648 tj. 2 31 2 147 483 647 tj. 2 31-1 4 0 4 294 967 295 tj. 2 32-1 char signed char 1-128 tj. -2 7 127 tj. 2 7-1 unsigned char 1 0 255 tj. 2 8-1 Velikost vnitřní reprezentace (B), min. a max. hodnota platí pro 32bitové prostředí Ing. Miroslav Balík, Ph.D. - BI-PA1-02 15/29

Ing. Miroslav Balík, Ph.D. - BI-PA1-02 16/29 Celočíselné typy Rozsahy celočíselných typů v C nejsou dány normou, ale implementací (pro 16ti bitové prostředí jsou jiné než je uvedeno v předchozí tabulce limits.h, float.h Norma pouze garantuje short <= int <= long unsigned short <= unsigned <= unsigned long Celočíselné literály (zápisy čísel): dekadický 123 456789 hexadecimální 0x12 0xFFFF (začíná 0x nebo 0X) oktalový 0123 0567 (začíná 0) unsigned 123456U (přípona U nebo u) long 123456L (přípona L nebo l) unsigned long 123456UL (přípona UL nebu ul) Není-li uvedena přípona, jde o literál typu int

Ing. Miroslav Balík, Ph.D. - BI-PA1-02 17/29 Vnitřní reprezentace celočíselných typů Nezáporná celá čísla (unsigned) jsou zobrazena posloupností bitů (8, 16, 32) reprezentující číslo ve dvojkové soustavě (binární číslo délky 8, 16, 32 bitů) 00000101 unsigned char x = 5; Celá čísla nezáporná a záporná (signed) - jsou zobrazena pomocí nějakého kódu Nejčastěji se používá doplňkový kód (dvojkový doplněk) V doplňkovém kódu je celé číslo x zobrazeno binárním číslem x délky n takto: x = x pro x >= 0 x = x + M pro x < 0, kde M = 2 n char y = -5; x + M = -5 + 256 = 251 11111011 251 10 = 1111101 2 nejvyšší bit (znaménko) nejnižší bit

Ing. Miroslav Balík, Ph.D. - BI-PA1-02 18/29 Vnitřní reprezentace celočíselných typů Doplňkový obraz záporného čísla vytvoříme také tímto způsobem vytvoříme binární obraz absolutní hodnoty invertujeme jednotlivé binární číslice (0 změníme na 1 a 1 změníme na 0) binárně připočteme 1 Příklad pro -5 binární obraz absolutní hodnoty 00000101 inverze bitů 11111010 +1 1 výsledek 11111011

Celočíselné výstupní konverze Při výpisu hodnoty celočíselného typu lze použít následující celočíselné konverze: d celé číslo dekadicky se znaménkem i celé číslo dekadicky se znaménkem u celé číslo dekadicky bez znaménka x celé číslo hexadecimálně bez znaménka (hex. číslice a,b,c,d,e,f) /* prog2-3a.c */ X celé číslo hexadecimálně bez znaménka (hex. číslice A,B,C,D,E,F) o celé číslo oktalově bez znaménka int a; printf("zadejte cele cislo\n"); scanf("%d", &a); /* -1 */ printf("zadane cislo je\n"); printf("a=%d\n", a); %x: 0xffffffff %o: 37777777777 %d: -1 %u: 4294967295 Ing. Miroslav Balík, Ph.D. - BI-PA1-02 19/29

Ing. Miroslav Balík, Ph.D. - BI-PA1-02 20/29 Znaky Pro zobrazení znaků v paměti počítače existuje řada kódů Kód zobrazení znaků stanovuje pro každý znak z určité množiny znaků nezáporné celé číslo, kterým je znak v paměti zobrazen Jazyk C používá pro zobrazení znaků kód ASCII (American Standard Code for Information Interchange) ASCII byl původně 7mi bitový, později byl rozšířen na 8 bitů Intervaly kódových (pořadových) čísel: 0 31 řídicí znaky, které nemají lexikografické vyjádření 32 mezera 33 127 písmena americké abecedy, dekadické číslice a další znaky 128 255 písmena národních abeced dle kódové stránky (nebudeme používat) V následující tabulce jsou uvedeny znaky a jejich kódy pro 7mi bitový kód ASCII

Kód ASCII!! 0 1 2 3 4 5 6 7 0 NUL SOH STX ETX EOT ENQ ACK BEL 8 BS HT LF VT FF CR SO SI 16 DLE DC1 DC2 DC3 DC4 NAK SYN ETB 24 CAN EM SUB ESC FS GS RS US 32! # $ % & 40 ( ) * +, -. / 48 0 1 2 3 4 5 6 7 56 8 9 : ; < = >? 64 @ A B C D E F G 72 H I J K L M N O 80 P Q R S T U V W 88 X Y Z [ \ ] ^ _ 96 ` a b c d e f g 104 h i j k l m n o 112 p q r s t u v w 120 x y z { ~ DEL Ing. Miroslav Balík, Ph.D. - BI-PA1-02 21/29

Ing. Miroslav Balík, Ph.D. - BI-PA1-02 22/29 Literály typu char Literál typu char: znak uzavřený mezi apostrofy 'a' '@' '1' char c = 'A'; Pozor: posloupnost znaků uzavřená mezi uvozovkami je řětezec znaků! Znak, který nemá lexikografické vyjádření, zadáme pomocí kódového čísla v osmičkové nebo šestnáctkové soustavě '\012' '\xa' (LF) Pro některé řídící a jiné znaky je možno použít tzv. escapesekvenci znak zápis kód (10) nový řádek '\n' 10 tabelátor '\t' 9 apostrof '\'' 39 zp. lomítko '\\' 92

Ing. Miroslav Balík, Ph.D. - BI-PA1-02 23/29 Znaková výstupní konverze Při výstupu hodnoty celočíselného typu lze použít znakovou konverzi printf( %c, výraz); Z hodnoty výrazu se vezme nejnižší (nejméně významný) bajt, jeho hodnota se interpretuje jako kódové číslo znaku a znak se vypíše Příklad: /* prog2-3a.c */ int a; printf("zadejte cele cislo\n"); scanf("%d", &a); printf("zadane cislo je\n"); printf("a=%d\n", a); 40 64 @ 40 64 @ ff40 65344 @

Ing. Miroslav Balík, Ph.D. - BI-PA1-02 24/29 Znaková vstupní konverze Jeden znak z klávesnice přečteme pomocí funkce scanf a vstupní konverze %c /* prog2-4d.c */ char c; printf("zadejte z klavesnice znak a pak Enter\n"); scanf("%c", &c); printf("zadali jste znak %c, hexkod %x\n", c, c);

Ing. Miroslav Balík, Ph.D. - BI-PA1-02 25/29 Přiřazovací příkaz Slouží pro přiřazení hodnoty proměnné Tvar přiřazovacího příkazu: proměnná = výraz; Příklad: x = y + z; proměnné x se přiřadí součet hodnot proměnných y a z x = x + 1; hodnota proměnné x se zvětší o 1 Proměnné lze přiřadit pouze hodnotu jejího typu Výraz na pravé straně přiřazení může být jiného typu, než je typ proměnné, hodnota se konvertuje na typ proměnné (pokud existuje implicitní konverze)

Ing. Miroslav Balík, Ph.D. - BI-PA1-02 26/29 Konverze při přiřazení celočíselných typů sizeof(proměnná) = sizeof(hodnota) Jestliže velikost vnitřní reprezentace proměnné a přiřazované hodnoty je stejná, přiřadí se bitová reprezentace čísla a nic se nemění /* prog2-5a.c */ int i; unsigned u = 0xffffffff; i = u; printf("u %x %u\n", u, u); printf("i %x %d\n", i, i); u ffffffff 4294967295 i ffffffff -1

Ing. Miroslav Balík, Ph.D. - BI-PA1-02 27/29 Konverze při přiřazení celočíselných typů sizeof(proměnná) < sizeof(hodnota) Jestliže velikost vnitřní reprezentace proměnné je menší než velikost vnitřní reprezentace přiřazované hodnoty, nadbytečné horní bajty se ignorují /* prog2-5b.c */ char c; unsigned u = 0xffffff40; c = u; printf("u %x %u\n", u, u); printf("c %x %c\n", c, c); u ffffff40 4294967104 c 40 @

Ing. Miroslav Balík, Ph.D. - BI-PA1-02 28/29 Konverze při přiřazení celočíselných typů sizeof(proměnná) > sizeof(hodnota) a hodnota je unsigned Jestliže velikost vnitřní reprezentace proměnné je větší než velikost vnitřní reprezentace přiřazované hodnoty a hodnota je unsigned (bez znaménka), chybějící horní bajty se vynulují Příklad: /* prog2-5c.c */ unsigned char c = 0xff; int i; i = c; printf("c %x %d\n", c, c); printf("i %x %d\n", i, i); c ff 255 i ff 255

Konverze při přiřazení celočíselných typů sizeof(proměnná) > sizeof(hodnota) a hodnota je signed Jestliže velikost vnitřní reprezentace proměnné je větší než velikost vnitřní reprezentace přiřazované hodnoty a hodnota je signed (se znaménkem), do chybějících horních bajtů se doplní znaménkový (nejvyšší) bit /* prog2-5d.c */ char c = 0xff; int i; i = c; printf("i %x %d\n", i, i); printf("c %x %d\n", c, c); i ffffffff -1 c ffffffff -1 hodnota typu char se při předání funkci printf konvertuje na int Ing. Miroslav Balík, Ph.D. - BI-PA1-02 29/29