From: John Koleszar Date: Tue, 19 May 2009 13:31:48 GMT Subject: Re: [PATCH 4/3] Introduce 'convert_path_to_git()' Message-ID: <1242739908.17490.5.camel@cp-jk-linux.corp.on2.com> In-Reply-To: Haven't been following this thread, so I don't know what the context is here, but the brain teaser caught my eye. On Tue, 2009-05-19 at 08:20 -0400, Jens Kilian wrote: > Junio C Hamano pobox.com> writes: > > "Ugly" is not quite the word I am looking for. "My gut feels that there > > has to be a way to write this more cleanly, but I am frustrated that I > > cannot come up with one" might be the word... > > How about this: > > #include > -#define MAGIC(type) ((~(type)0 / (type)0xff) << 7) +#define MAGIC(type) ((type)(~(type)0 / 0xffU << 7)) > #define TEST(type) printf(#type " %llx\n", (unsigned long long)MAGIC(type)) > > int > main(void) > { > /*TEST(unsigned char); Doesn't work, and I'm too lazy to find out why. */ > TEST(unsigned int); > TEST(unsigned long); > TEST(unsigned long long); > return 0; > } > --John