Army1987 said:
Since the ++ in ++x is one token, to be pedantic that's not a
one-to-one correspondence.
To be pedantic, yes it is (see below).
How you distinguish it from `+ +x`?
("By never using the latter" is an answer good enough...)
I don't need a one-to-one correspondence between C tokens and English
words. In this case, I'm satisfied with a one-to-one correspondence
between the C token ``++'' and the English phrase ``plus plus'' (which
wouldn't be a phrase in most contexts, but that's ok).
(In George Orwell's Newspeak, I suppose I could say ``doubleplus'';
I'd then feel obligated to declare a vaiable ``ungood''.)
If I wanted to refer to two consecutive ``+'' tokens, I'd probably
pause between the first and second ``plus'', or I'd find some other
way to disambiguate it.
Spoken English can't convey C source code with 100% accuracy unless
you speak *extremely* verbosely. In most contexts, such precision
isn't necessary. Consider a phone conversation where both of us are
looking at the same source code:
You see that line where it says "y equals x plus plus"? No, not
that one, the second occurrence in function "foo", just before the
"print-eff" call. Yeah, line 123. Try changing it from "y equals
x plus plus" to "y equals plus plus x".
I've said before that I prefer to pronounce ``='' and ``=='' as
``assign'' and ``is equal to'', respectively. I haven't followed that
here, because in this context there's no ambiguity; if there were, I'd
be more precise.
If I found myself saying:
No, it's not not "f o o b a r", it's "capital f, small o, small o,
underscore, capital b, small a, small r".
I'll probably just say "Forget it, just check your e-mail in five
minutes and call me back if it not clear enough".
C is fundamentally not a spoken language. When we say out loud things
like "plus plus" or "equals equals", we're not really speaking C,
we're speaking *about* C. Sometimes that's sufficient, but when we
actually need to speak C, writing it down is the only way to go.