标签: post-increment

这段代码是如何工作的?

我正在寻找c ++ for dummies并找到了这段代码

#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;

int nextStudentId = 1000; // first legal Student ID
class StudentId
{
public:
StudentId()
{
    value = nextStudentId++;
    cout << "Take next student id " << value << endl;
}

// int constructor allows user to assign id
StudentId(int id)
{
    value = id;
    cout << "Assign student id " << value << endl;
}
protected:
int value;
};

class Student
{
public:
Student(const char* pName)
{ …
Run Code Online (Sandbox Code Playgroud)

c++ pre-increment post-increment

3
推荐指数
2
解决办法
290
查看次数

postincrement i ++什么时候执行?

可能重复:
未定义的行为和序列点

在机器代码级别的C++中,postincrement ++运算符何时执行?

所述优先级表表示后缀++运算符是2级:这意味着在

int x = 0 ;
int y = x++ + x++ ;  // ans: y=0
Run Code Online (Sandbox Code Playgroud)

后缀++ 首先执行.

但是,这条线的逻辑运算似乎是首先添加(0 + 0),但是这是怎么回事?

我想象的是以下内容:

// Option 1:
// Perform x++ 2 times.
// Each time you do x++, you change the value of x..
// but you "return" the old value of x there?
int y = 0 + x++ ;  // x becomes 1, 0 is "returned" from x++

// do it for the …
Run Code Online (Sandbox Code Playgroud)

c++ post-increment

3
推荐指数
2
解决办法
3022
查看次数

Postfix运算符重载顺序

可能重复:
未定义的行为和序列点

重载postfix运算符时,我无法理解操作的顺序.我们来看看下面的两个小例子:

int i = 0;
std::cout << std::endl << "i: " << i;
i = ++i;
std::cout << std::endl << "i: " << i;
i = i++;
std::cout << std::endl << "i: " << i;

MyClass myObject;
std::cout << std::endl << "myObject: " << myObject.getMyValue();
myObject = ++myObject;
std::cout << std::endl << "myObject: " << myObject.getMyValue();
myObject = myObject++;
std::cout << std::endl << "myObject: " << myObject.getMyValue();
Run Code Online (Sandbox Code Playgroud)

出现了两种截然不同的行为.输出如下:

i: 0
i: 1
i: 2
myObject: 0
myObject: 1 …
Run Code Online (Sandbox Code Playgroud)

c++ operator-overloading post-increment

3
推荐指数
1
解决办法
930
查看次数

迭代器中的C++后增量运算符重载(使用-Wall -Werror进行编译)

我正在为一个b树创建自己的迭代器,而且我一直坚持如何在没有编译器抱怨的情况下实现后增量运算符.

错误消息如下所示,并且是预期的(因为我正在做错误消息所说的)

cc1plus: warnings being treated as errors
error: reference to local variable 'temp' returned
Run Code Online (Sandbox Code Playgroud)

我需要使用-Wall和-Werror标记编写函数,所以希望有人能够帮助我解决这个问题.

这是功能:

template <typename T> btree_iterator<T>& btree_iterator<T>::operator++(int) {

  btree_iterator<T> temp(*this);
  pointee_ = pointee_->nextNode();
  return temp;
}
Run Code Online (Sandbox Code Playgroud)

我环顾四周,我只能找到人们实现操作员的例子.

每当我以前遇到这样的问题时,我'新'了我正在返回的对象,以便它不再是临时的.但由于这是一个迭代器,如果我这样做,我将无法释放内存,从而导致内存泄漏.

如果有人能够帮助我,那将非常感谢!如果我的设计还有其他任何可以帮助您理解问题的信息,请告诉我.

问候.

c++ iterator b-tree operator-overloading post-increment

3
推荐指数
1
解决办法
636
查看次数

由一个和三元运算符递增整数

我是Python的新手,如何在Python中执行以下C语言?

i += 1

i++

i = (j == 2)? 1 : 0
Run Code Online (Sandbox Code Playgroud)

谢谢.

c python increment ternary-operator post-increment

3
推荐指数
1
解决办法
3314
查看次数

递归方法调用中的递增/递减(Java)

假设您有一个递归方法,并在递归调用中后递增/递减值.当预增量/减量不会导致堆栈溢出异常时,为什么会这样?

防爆.

numberCount(currentNumber++); //Stack overflow exception

numberCount(++currentNumber); //No stack overflow exception
Run Code Online (Sandbox Code Playgroud)

提前感谢您的任何澄清.

java recursion pre-increment post-increment

3
推荐指数
1
解决办法
1979
查看次数

如何在复杂表达式中计算java增量语句

以下代码的输出是什么:

int x = 2;  
x += x++ * x++ * x++;  
System.out.println(x);  
Run Code Online (Sandbox Code Playgroud)

我知道这++variableName是预增量运算符,并且值variableName在表达式中使用之前递增,而在执行表达式variableName++之后递增其值.我想知道的是 - 这个逻辑在这里如何应用?

java operator-precedence post-increment

3
推荐指数
1
解决办法
638
查看次数

b = b ++和b ++之间的差异

我在接受采访时被问到以下问题.

int b = 0;
b = b++;
b = b++;
b = b++;
b = b++;
Run Code Online (Sandbox Code Playgroud)

每行执行后b的值是多少?每行输出为0.

为什么输出不是0,1,2,3?

java post-increment

3
推荐指数
1
解决办法
1699
查看次数

为什么"ref"没有为下一个字段分配更新值?

我发现了一个非常酷的编译器功能.但是,我无法理解这种行为的逻辑.

static int IncrementValue(ref int i) { return i++;}
Run Code Online (Sandbox Code Playgroud)

和主要方法:

static void Main(string[] args)
{
    int a = 2;
    int b = IncrementValue(ref a);
    Console.WriteLine(a+b);
} 
Run Code Online (Sandbox Code Playgroud)

输出为5.

我的问题是:

  1. 为什么"b"字段等于2?(在我看来,它应该是3,因为"ref"关键字不是按值复制,而是关键字按值逐字段.因此,"b"应该是"a + 1")

.net c# ref pass-by-reference post-increment

3
推荐指数
1
解决办法
85
查看次数

为什么for-loops的预增量与后增量相同?

可以说每个人都学习使用后增量编写for循环:

for(var i = 0; i < 10; i++) {
  console.log(i); // 0..9
}
Run Code Online (Sandbox Code Playgroud)

当我将后增量交换为预增量时,我期望以下内容:

for(var i = 0; i < 10; ++i) {
  console.log(i); // 1..10
}
Run Code Online (Sandbox Code Playgroud)

我的推理:i初始化为0; 循环体将在i小于10时执行; i递增到1并输入循环体; i有价值1的印刷品以确认; 再次评估循环的条件; 等等

然而,输出(至少对于Chrome中的JavaScript)与后增量相同:0..9.这是为什么?机身运行后是否执行增量?

javascript for-loop pre-increment post-increment

3
推荐指数
1
解决办法
158
查看次数