我没有得到预期的结果。
void main(){
int x = 5;
int y = x++;
printf("%d, %d", x, y);
}
我得到6, 5
作为输出,但是我期望6, 6
。
答案 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);
}