c 如何处理 +- 系列?
How does c process series of +-?
有人能解释一下c是如何处理+-系列的吗?
例如:
int x = 5, y = 8;
printf("%d\n", x-+-y); /* out: 13 */
printf("%d\n", x-+-+y); /* out: 13 */
printf("%d\n", x-+-+-y); /* out: -3 */
printf("%d\n", x+-+y); /* out: -3 */
printf("%d\n", x+-+-y); /* out: 13 */
printf("%d\n", x+-+-+y); /* out: 13 */
P. S. 我使用 std=c90,所以如果答案不同,请回答所有标准。
x-+-y
这被评估为x-(+(-y))
。
x-+-+y
这被评估为x-(+(-(+y)))
。
x-+-+-y
这被评估为x-(+(-(+(-y))))
。
x+-+y
这被评估为x+(-(+y))
。
x+-+-y
这被评估为x+(-(+(-y)))
。
x+-+-+y
这被评估为x+(-(+(-(+y))))
。
在这种情况下,没有 +
或 -
的并发序列,因此在初始 +
之后的所有 +
或 -
或 -
是一元运算符。
有人能解释一下c是如何处理+-系列的吗? 例如:
int x = 5, y = 8;
printf("%d\n", x-+-y); /* out: 13 */
printf("%d\n", x-+-+y); /* out: 13 */
printf("%d\n", x-+-+-y); /* out: -3 */
printf("%d\n", x+-+y); /* out: -3 */
printf("%d\n", x+-+-y); /* out: 13 */
printf("%d\n", x+-+-+y); /* out: 13 */
P. S. 我使用 std=c90,所以如果答案不同,请回答所有标准。
x-+-y
这被评估为x-(+(-y))
。
x-+-+y
这被评估为x-(+(-(+y)))
。
x-+-+-y
这被评估为x-(+(-(+(-y))))
。
x+-+y
这被评估为x+(-(+y))
。
x+-+-y
这被评估为x+(-(+(-y)))
。
x+-+-+y
这被评估为x+(-(+(-(+y))))
。
在这种情况下,没有 +
或 -
的并发序列,因此在初始 +
之后的所有 +
或 -
或 -
是一元运算符。