增量运算符未显示预期结果

时间:2019-07-24 18:51:39

标签: c increment

我没有得到预期的结果。

void main(){
    int x = 5;
    int y = x++;
    printf("%d, %d", x, y);
}

我得到6, 5作为输出,但是我期望6, 6

4 个答案:

答案 0 :(得分:4)

您正在使用后递增运算符。

该行:

int y = x++;

等效于:

int y = x;
x += 1;

x的值在将x的值复制到y之后发生。

pre-increment运算符可能是您想要的,它的用法如下:

int y = ++x;

这等效于:

int y;
x += 1;
y = x;

这似乎是您期望的。

答案 1 :(得分:3)

++运算符的行为因位置而异。

y = x++;将获得x的值,然后将其递增。 (后递增)

y = ++x;将首先递增x,然后将该新值赋予y。 (预递增)

您可能正在寻找预增量。

答案 2 :(得分:0)

您正在使用后增量运算符。它的值等于变量之前的值,因此它递增,这就是y包含5的原因。

对于您的情况,您需要预增量运算符。

y = ++x:

答案 3 :(得分:0)

您已使用后递增运算符(即x++)并将其分配给y,因此y将为6,而x将为5。 >

对于预期的输出,请使用预增量运算符,如下所示:

int main() {
    int x = 5;
    int y = ++x;
    printf("%d, %d", x, y);
}