Path: utzoo!attcan!uunet!mcvax!ukc!stl!stc!root44!aegl From: aegl@root.co.uk (Tony Luck) Newsgroups: comp.std.c Subject: Re: The \c escape Message-ID: <596@root44.co.uk> Date: 29 Jun 88 10:16:46 GMT References: <4604@haddock.ISC.COM> <5907@umn-cs.cs.umn.edu> <8125@brl-smoke.ARPA> <8127@brl-smoke.ARPA> <963@ficc.UUCP> Reply-To: aegl@root44.UUCP (Tony Luck) Organization: UniSoft Ltd, London, England Lines: 20 In article <963@ficc.UUCP> peter@ficc.UUCP (Peter da Silva) writes: > >(2) What's wrong with a readable and maintainable way of initialising a > 32-bit unsigned integer to 0x464F524DL? You prefer that (or ('F'<<24)| > ('O'<<16)|('R'<<8)|('M')) to 'FORM'? But (as many people have already tried to point out) multi-character constants aren't portable .... 'FORM' isn't necessarily 0x464F524DL e.g. on my machine here (68030 based, i.e. big-endian) the following program: main() { printf("0x%x\n", 'FORM'); } produces as output: 0x4d524f46 Which in these days of portable data interchange, and networked systems is likely to mess up your whole day. Tony Luck