首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual Basic C#输出意外

Visual Basic C#输出意外
EN

Stack Overflow用户
提问于 2015-09-07 18:37:33
回答 2查看 41关注 0票数 0

Visual Basic和C#仅仅是学习基础知识和这些非常简单的几行代码的输出就把我搞糊涂了。

代码语言:javascript
复制
int x = 10;
int y = x++;
Console.WriteLine(x);
Console.WriteLine(y);

输出是11,然后是10。我期望的是10,然后是11。这里我漏掉了什么?

EN

回答 2

Stack Overflow用户

发布于 2015-09-07 18:39:51

x++在其使用之后递增x (在您的示例中,在将其当前值赋给y之后)。另一方面,在使用x之前,++x会递增它。所以

代码语言:javascript
复制
int x = 10;
int y = ++x;   // Note that the plus signs stand before x, not after!
Console.WriteLine(x);
Console.WriteLine(y);

会导致

11

11

如果您想将x+1 (11)赋值给y,并将x留给10,那么请执行以下操作

代码语言:javascript
复制
int x = 10;
int y = x + 1;
Console.WriteLine(x);
Console.WriteLine(y);

10

11个

票数 2
EN

Stack Overflow用户

发布于 2015-09-07 18:43:06

y = x++将首先赋值,然后递增。y = ++x将首先递增,然后赋值。在您的示例中,首先将x的值赋给y,然后将x递增到11

因为int是一个value type (与引用类型相比),所以更改x的值不会影响分配给y的值。

代码语言:javascript
复制
int x = 10;
int y = x++; // Assigns the value of x to y (i.e. 10), THEN incrementing x to 11.
Console.WriteLine(x); // Writes the current value of x (i.e. 11).
Console.WriteLine(y); // Writes the current value of y (i.e. 10).
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32436634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档