This expression
z2=x2+++y2;
is parsed by the compiler like
z2 = x2++ + y2;
From the C Standard (6.4 Lexical elements)
4 If the input stream has been parsed into preprocessing tokens up to
a given character, the next preprocessing token is the longest
sequence of characters that could constitute a preprocessing token.
So these tokens +++
are parsed like ++
and +
.
The expression with the macro
z1=AD(x1,++y1);
is parsed by the compiler like
z1 = x1 + ++y1;
The compiler already formed these sets of tokens x1
and ++y1
due to the comma between the tokens.
So these two statements are different.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…