Логическое "и" на чистейшем Си
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$