Programovací jazyk C
Dneska se v krátkosti podíváme na jednu srandu z C a C++, konkrétně na to, že pozice jistých specifikátorů (např. typedef
) nehraje roli.
Programovací jazyk C
Dneska se v krátkosti podíváme na jednu srandu z C a C++, konkrétně na to, že pozice jistých specifikátorů (např. typedef
) nehraje roli.
O existenci ukazatelů na funkce většina programátorů v C a C++ ví, i když je třeba příliš nepoužívá. V následujícím příspěvku bych chtěl upozornit na některá syntaktická pozlátka, která lze při práci s ukazateli na funkce použít.
Shodou okolností jsem se dostal k zajímavému námětu na otázku, a tak toho hned využívám. Tentokrát bude úkolem vysvětlit chování programu. Zdroj otázky i původce řešení zveřejním až s uveřejněním řešení.
Když se zeptáte programátora v jazyce C na for cyklus, tak vám odvětí, že se skládá z hlavičky, která je tvořena třemi výrazy oddělenými středníky, kde do první se dává deklarace proměnných, do druhé podmínka ukončení cyklu, a do poslední akce provedená po každé iteraci. Každá z těchto částí je nepovinná. A pak následuje tělo cyklu. Co je ale zajímavé, tak je to, že to není tak úplně pravda a volitelnost částí záleží na typu for cyklu, který se použije.
Pokud ve svém C či C++ programu porovnáváte znaménková a bezznaménková čísla, používáte překladač GCC a máte zaplá varování, tak jste se již určitě setkali s varováním warning: comparison between signed and unsigned integer expressions
. Toto varování bývá velmi často přehlíženo, a to mnohdy z toho důvodu, že dotyčnému není jasné, kde by mohl vzniknout problém. Cílem tohoto krátkého příspěvku je na tento problém poukázat.
Tentokrát budeme doplňovat program, který nevypadá jako Céčkový ani C++ový, tak, že bude přeložitelný překladačem C či C++ a bude dělat to samé, co původní program.
Pravidelně se setkávám s mylným názorem, že "ukazatel je číslo". V tomto příspěvku bych chtěl (1) poukázat na to, že tvrdit, že "ukazatel je číslo", je to stejné, jako tvrdit, že "Bozetechova 2, 612 66 Brno, Czech Republic" je číslo a (2) že ukazatele a čísla nelze jen tak mezi sebou převádět.
Tentokrát bude úloha/hádanka buď značně triviální, nebo obtížná, a to v závislosti na tom, zda prokouknete trik, který bude třeba využít ;).
Následující příspěvek je nejen pro ty, kterým kód a[i] = i++;
připadá v pořádku, či kteří si myslí, že rozdíl mezi ++i
a i++
je v tom, že ten druhý způsobí zvýšení hodnoty i
až po dokončení zpracování výrazu, kde se vyskytuje ;).
Po delší době přináším další hádanku z oblasti programovacích jazyků C a C++. Tentokrát budeme řešit triviální věc nekonvenčním způsobem. Nic složitého to ale nebude a tak postačí dostatek důvtipu :).