Típusok; Kifejezések
Típusok
Az INTERCAL kizárólag 16- és 32-bites, előjel nélküli egészeket használ. Az ilyen típusú változókra egy ponttal (16-bites) vagy kettősponttal (32-bites) és egy 1 és 65535 közötti számmal hivatkozhatunk. A .1 és a :1 két teljesen független változó. 16 bites kifejezést mindig használhatunk egy 32 bites érték helyén, fordítva csak akkor, ha a kifejezés értéke beleesik az [1..65535] intervallumba. Ha ez nem teljesül, futásidejű hiba lép fel.
Tömbök
A tömbökre hasonlóan hivatkozhatunk mint az egyszerû változókra, csak a típusukat egy vesszõ vagy pontosvesszõ jelzi. Lehetnek többdimenziósak. Használat elõtt létre kell hozni õket: DO <tömb> <- <méret_1> [BY <méret_2>] ...
A tömböket kizárólag elemenként érhetjük el <tömb> SUB <index_1> [<index_2>] ...
formában, egyben értékadás nincs (de lásd fejlett IO). Az indexelés 1-gyel kezdõdik.
A tömböket át lehet méretezni, ekkor a korábbi tartalmuk elvész.
Kifejezések
Az operátoroknak nincs precedenciája, minden kifejezést egyértelmûen zárójelezni kell. Erre aposztróf- vagy idézõjelpár használható.
Unáris operátorok:
& (és),V (vagy),? (kizáró vagy)
Az operandust egy bittel jobbra forgatja, majd összeéseli (vagyolja, kizáró vagyolja) az eredeti értékkel.
'' = #2
Bináris operátorok:
$ (összefésülés)
Két 16 bites számot bitenként összefésül.
#65535$#0 = 101010...10
#0$#65535 = 010101...01
~ (kiválasztás)
A baloldali operandusból kiválasztja és jobbra tömöríti azokat a biteket, ahol a jobboldali operandusban 1 áll. Például a #179~#201 (binárisan 10110011~11001001) kiválasztja a hetedik, hatodik, harmadik és nulladik bitet, így az eredmény 1001 = #9.
Az INTERCAL-72 úgy definiálta a kiválasztást, hogy a visszatérési érték 16 bites, ha legfeljebb 16 bitet választunk ki, különben 32 bites. A C-INTERCAL-nál az eredmény típusa megegyezik a jobboldali operanduséval, ezzel erõsen típusossá vált a nyelv.