/*
 * bool-operations.c
 *
 * Author: Intel A80486DX2-66
 * License: Creative Commons Zero 1.0 Universal
 */

#include <inttypes.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>

#define BOOL_TO_STR(x) ((x) ? "true" : "false")
#define SHOW_BOOL printf("boolean = %s\t(0x%" PRIxMAX ")\n",                  \
                         BOOL_TO_STR(boolean),                                \
                         (uintmax_t) boolean)

int main() {
	bool boolean = false;
	printf("Loop:\n");
	for (uint8_t i = 0; i < 3; i++) {
		SHOW_BOOL;
		boolean++;
	}

	printf("\n* 2:\n");
	boolean *= 2;
	SHOW_BOOL;

	printf("\n<< 1:\n");
	boolean <<= 1;
	SHOW_BOOL;

	printf("\n/ 2:\n");
	boolean /= 2;
	SHOW_BOOL;

	printf("\n^ 0x10:\n");
	boolean ^= 0x10;
	SHOW_BOOL;

	printf("\n>> 1:\n");
	boolean >>= 1;
	SHOW_BOOL;

	return 0;
}