Логическое "и" на чистейшем Си
Oct. 17th, 2012 10:28 pmЭто музыкой навеяло:
alexo@euromake:/tmp/and$ cat and.c
void *
true_(x, y)
void *x, *y;
{
return x;
}
void *
false_(x, y)
void *x, *y;
{
return y;
}
void *
bool_[] = {false_, true_};
void *
and(x, y)
void *(*x)(), *y;
{
return x(y, x);
}
main(argc, argv)
char *argv[];
{
int x = argv[1][0] - '0';
int y = argv[2][0] - '0';
return (true_ == and(bool_[x], bool_[y]));
}
alexo@euromake:/tmp/and$ cat Makefile
all: and
./and 0 0; echo $$?
./and 0 1; echo $$?
./and 1 0; echo $$?
./and 1 1; echo $$?
clean:
-rm -f and
alexo@euromake:/tmp/and$ make
cc and.c -o and
./and 0 0; echo $?
0
./and 0 1; echo $?
0
./and 1 0; echo $?
0
./and 1 1; echo $?
1
alexo@euromake:/tmp/and$