【问题标题】:How does c process series of +-?c如何处理+-系列?
【发布时间】:2019-10-10 22:38:22
【问题描述】:

有人可以解释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-x是有效的吗?
  • @Ry- 我认为这不是简单的x- + -y 问题,而是下一个问题:x- +- +y。除了幺正运算符,中间还有一些-+- 操作。
  • @daShier 第一个运算符之后的所有运算符都是一元运算符。不是x-+-y,是x-+-y

标签: c operators


【解决方案1】:

x-+-y

这被评估为x-(+(-y))

x-+-+y

这被评估为x-(+(-(+y)))

x-+-+-y

这被评估为x-(+(-(+(-y))))

x++-+y

这被评估为x+(-(+y))

x+-+-y

这被评估为x+(-(+(-y)))

x+-+-+y

这被评估为x+(-(+(-(+y))))


在这种情况下,没有+-的并发序列,因此在初始+-之后的所有+s或-s都是一元运算符。

【讨论】:

    猜你喜欢
    • 2014-03-14
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 2019-01-07
    • 2011-02-22
    • 2014-10-01
    相关资源
    最近更新 更多