为什么输出是 2 而不是 7 ?+ 号如何使它与众不同

why the output is 2 not 7 ? how + sign makes it different

本文关键字:何使它 与众不同 输出 为什么      更新时间:2023-10-16
int main()
{
        int a=3;
        a +=2;
        a = +2;
        printf("%d",a);
}

该程序的输出是 2 为什么?

为了使输出为 7,您的代码应该是

int main()
{
        int a=3;
        a +=2;
        a = a+2;
        printf("%d",a);
}

通过在printf行之前键入a = +2;您只需将正值2分配给变量。

a

+= 2 与 a = a + 2 相同

a =+2 将值设置为 2,无论之前的值是什么。

我不确定为什么要在将变量分配给值后(在打印之前)获得不同的输出。

这不是魔法。

a = +2;a= 2;相同

您正在覆盖 a 的值。 所以没有用a+=2.你可以直接写int a=2.

有趣的是,编译器(任何好的编译器!)可能会通过使用某种称为死代码消除的技术来消除a+=2语句。

+2基本上是将一元运算器+应用于整数2。然后是赋值语句。


除非你超载了一元+否则它不应该让你对这种行为感到断章取义。

更准确地说,不能重载int或内置类型。所以没有办法,你超载了那个+。(并且没有用户定义的类型)(彼得·贝克尔的评论

相关文章: