Analizując kod źródłowy jednej aplikacji natrafiłem na dość nietypową dla mnie instrukcję, a raczej warunek:
if (n and k) = 0 then
"n" i "k" to zmienne typu integer.
Poniżej kod w którym użyta jest ta instrukcja:
Program gen;
var n,k:integer;
begin
for n:=0 to 10 do
begin
for k:=0 to 10 do
begin
if (n and k) = 0 then
begin
writeln('n = ',n,' k = ',k);
end;
end;
end;
readLn;
end.
A oto wynik zwracany przez tę aplikacje:
n = 0 k = 0
n = 0 k = 1
n = 0 k = 2
n = 0 k = 3
n = 0 k = 4
n = 0 k = 5
n = 0 k = 6
n = 0 k = 7
n = 0 k = 8
n = 0 k = 9
n = 0 k = 10
n = 1 k = 0
n = 1 k = 2
n = 1 k = 4
n = 1 k = 6
n = 1 k = 8
n = 1 k = 10
n = 2 k = 0
n = 2 k = 1
n = 2 k = 4
n = 2 k = 5
n = 2 k = 8
n = 2 k = 9
n = 3 k = 0
n = 3 k = 4
n = 3 k = 8
n = 4 k = 0
n = 4 k = 1
n = 4 k = 2
n = 4 k = 3
n = 4 k = 8
n = 4 k = 9
n = 4 k = 10
n = 5 k = 0
n = 5 k = 2
n = 5 k = 8
n = 5 k = 10
n = 6 k = 0
n = 6 k = 1
n = 6 k = 8
n = 6 k = 9
n = 7 k = 0
n = 7 k = 8
n = 8 k = 0
n = 8 k = 1
n = 8 k = 2
n = 8 k = 3
n = 8 k = 4
n = 8 k = 5
n = 8 k = 6
n = 8 k = 7
n = 9 k = 0
n = 9 k = 2
n = 9 k = 4
n = 9 k = 6
n = 10 k = 0
n = 10 k = 1
n = 10 k = 4
n = 10 k = 5
Czy ktoś jest mi w stanie wyjaśnić w jakiej sytuacji warunek ten jest prawdziwy? Nie potrafię znaleźć żadnego powiązania pomiędzy zwracanymi wartościami.