为什么输出是 2 而不是 7 ?+ 号如何使它与众不同
why the output is 2 not 7 ? how + sign makes it different
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
或内置类型。所以没有办法,你超载了那个+
。(并且没有用户定义的类型)(彼得·贝克尔的评论)
相关文章:
- 我如何使它,无论用户用空白字符串按 Enter 多少次,它总是打印"开始"字符串?
- 如何使它看起来像正在下的雪
- 为什么字符串流只读取整数中的第一个数字?如何使它只在空白处移动?
- 将 std::atomic_flag 包裹在吸气剂/二传手中会使它的"atomicity"无效吗?
- 该代码不会在其中显示任何数字输入.如何使它显示任何输入
- 为什么输出是 2 而不是 7 ?+ 号如何使它与众不同
- 无论如何,是否可以使用setCursorPos(int,int)函数,但没有采用两个int使它需要速度较慢的两倍
- POD 类中的嵌套枚举是否使它不是 POD
- 多个线程同时在unordered_map中添加值会使它崩溃
- C++MessageBox(Windows.h)-它做什么以及如何使它不可见(或等效)
- 如何在c++ dll中实例化一个类,使它在函数调用之间保持内存
- 在QTableWidget中添加一个QPushButton到qtablewidgetiitem,如何使它Qt::Alig
- 延迟初始化缓存..我如何使它线程安全
- 如何修改一个类,使它只有一个成员函数,所有参数默认
- ' std::sort '在内部使用了什么魔法使它更快?
- 比较两个向量,使它更有效
- 我如何设置一个不断侦听循环与接收udp套接字,而不使它成为一个服务器
- Boost::process -如何使它只运行一个进程
- 我如何修复这段代码,使它不会pop_back或back()如果向量/堆栈是空的
- 根据定义,将"虚拟析构函数放入接口内"不会使它不再是接口吗?