C++ x+=1 x++ 和 x = x +1 是不一样的
C++ x+=1 x++ and x = x +1 are not the same?
我无法理解这些陈述如何产生不同值的概念。据我所知,x+=1,意味着x = x + 1。我也知道 x++ 应该等同于 x + 1。
我也搜索了这个主题,发现了提出相同问题的帖子,这些帖子通常通过说明语句/表达式相同来回答,但不同的结果是由于另一个代码错误。通过我将提供的示例,我看不到代码错误,所以请解释一下,谢谢。
int x = 0;
x++;
此时 x 应该是 1,因为 x++ 将 1 加到 x。
那么为什么如果我将 x 分配给 0,然后继续编写代码"cout <<x++;"我在屏幕上得到的值为 0?!.如果 x++ 等于 x+1,如果 x 为 0,则 1+0=1,x++ 如何变为 0?有人告诉我这是由于++被放在x之后,但是如果处理加法1 + 0与0 + 1相同,为什么这很重要?
cout << x++;
使用后缀增量运算符时,在增量之前输出x
的值。
cout << ++x;
会做你所期望的。
++
运算符有两种形式:前缀和后缀。您使用的是后缀表单。
x++
返回 x 的当前值,然后递增它。当你使用 cout << x++
时,它会打印 x 然后递增。
++x
做你想要的:它递增 x 然后返回它。 cout << ++x
会给你你想要的。
x++
只是返回x
,然后将x
增加1。
因此,在您的示例中cout << x++
相当于cout << x; x = x+ 1;
这是后增量,这意味着它将按原样执行变量,然后添加到变量中。
如果您尝试了预递增++x
,那么它将添加到变量中,并按原样执行变量(现在已递增)。
因此,int x = 0; x = x + 1; cout << x;
和int x = 0; x++; cout << x++;
都将打印1
。
Cout <<x++ 将首先打印 x,然后增加它,x++ 是后递增,因此在操作 x 之后增加。相反,++x 将做相反的事情。此外,如果您输入一些像 x+1 这样的表达式,该表达式将在打印之前被计算
x++ 是一个后递增,这意味着它在运行当前语句后递增。
相反,++x 在执行增量之前执行当前语句。
希望这有帮助。
- 自制的上衣:看起来一样,但不完全相同
- 为什么将两个对象分配给另一个对象后,两个对象不一样?
- 为什么向量不支持 size 作为成员变量,就像 Java 类中的长度变量一样,而是函数 size()?
- 如何创建像标准库头一样的头,以便在不链接头中函数的所有对象文件的情况下编译程序?
- 2D数组值像数组一样传递,0不打印
- C++ x+=1 x++ 和 x = x +1 是不一样的
- 为什么重新执行我的多线程代码后输出不一样
- 发布的应用程序与原始应用程序不一样
- 上传的文件和原来的不一样
- 输入Std::cin与直接赋值Std::string变量不一样
- 为什么每次执行这个程序的CPU时间都不一样
- 高斯生成的核和书中给出的不一样.为什么?
- 为什么保存到文件和加载的时间(NULL)和仅仅时间(NULL)是不一样的
- &(*similarObject) 和 similarObject 之间的区别?它们不一样吗?
- DLL函数名与导出的不一样
- 多次调用同一对象的析构函数,其结果与标准中描述的不一样
- 位字段大小与预期不一样,原因是什么
- .pdb中的函数地址与.exe中的不一样,为什么?
- Mat和written image是不一样的
- dynamic_cast的行为与APP_STL:=gnustl_static不一样