From mboxrd@z Thu Jan 1 00:00:00 1970 From: doug@cs.dartmouth.edu (Doug McIlroy) Date: Thu, 09 Feb 2017 16:14:30 -0500 Subject: [TUHS] // comment in C++ Message-ID: <201702092114.v19LEUgJ091850@tahoe.cs.Dartmouth.EDU> With no offense intended, I can't help noting the irony of the following paragraph appearing in a message in the company of others that address Unix "bloat". >'\cX' A mechanism that allows usage of the non-printable > (ASCII and compatible) control codes 0 to 31: to cre- > ate the printable representation of a control code the > numeric value 64 is added, and the resulting ASCII > character set code point is then printed, e.g., BEL is > '7 + 64 = 71 = G'. Whereas historically circumflex > notation has often been used for visualization pur- > poses of control codes, e.g., '^G', the reverse > solidus notation has been standardized: '\cG'. Some > control codes also have standardized (ISO 10646, ISO > C) alias representations, as shown above (e.g., '\a', > '\n', '\t'): whenever such an alias exists S-nail will > use it for display purposes. The control code NUL > ('\c@') ends argument processing without producing > further output. Except for the ISO citations, this paragraph says the same thing more succinctly. '\cX' represents a nonprintable character Y in terms of the printable character X whose binary code is obtained by adding 0x40 (decimal 64) to that for Y. (In some historical contexts, '^' plays the role of '\c'.) Alternative standard representations for certain nonprinting characters, e.g. '\a', '\n', '\t' above, are preferred by S-nail. '\c@' (NUL) serves as a string terminator regardless of following characters. And this version, 1/3 the length of the original, tells all one really needs to know. '\cX' represents a nonprintable character Y in terms of the printable character X whose binary code is obtained by adding 0x40 (decimal 64) to that for Y. '\c@' (NUL) serves as a string terminator regardless of following characters. Doug]