Requirement:Compare the input numbers (granted to be non-negative) without logical, relational or bitwise operators and no if/else statement or while loop or ternary operator, then insert the corresponding comparison sign between them.Previous question: Comparing two integers without logical, relational or bitwise operatorsAnswer link on Stack Overflow#include <stdio.h>#include <limits.h>#define ISEQUAL(x, y) (_Bool)((_Bool)((x) - (y)) - 1) // 1 if x == y, 0 if x != y#define NOTEQUAL(x, y) (_Bool)((x) - (y)) // 0 if x == y, 1 if x != yint main(void){    unsigned a, b;    printf(%u\n, UINT_MAX);    scanf(%u %u, &a, &b);    _Bool hasZero = NOTEQUAL(ISEQUAL(a, 0) + ISEQUAL(b, 0), 0);    _Bool hasMax = NOTEQUAL(ISEQUAL(a, UINT_MAX) + ISEQUAL(b, UINT_MAX), 0);    int hasBoth = ISEQUAL(hasZero + hasMax, 2);    int cmp = (_Bool)((a + hasZero + hasBoth) / (b + hasZero + hasBoth))\            - (_Bool)((b + hasZero + hasBoth) / (a + hasZero + hasBoth));    // + hasZero + hasBoth to avoid div 0: UINT_MAX -> 1, while 0 -> 2.    hasBoth =  1 - hasBoth * 2; // 1 if hasBoth == 0, or -1 if hasBoth == 1    char relation = <=>[hasBoth * cmp + 1]; // reverse if has both 0 and UINT_MAX    printf(%u %c %u\n, a, relation, b);    return 0;}What's new:Added support to 0. (OP added this requirement in his comment)Used macro to improve readabilityAdded some comments
Comparing two integers without logical, relational or bitwise operators - followup
c;programming challenge;macros