我问个C#幼稚的问题关于++的 ( 积分: 0 )

  • 主题发起人 主题发起人 xupengcn
  • 开始时间 开始时间
X

xupengcn

Unregistered / Unconfirmed
GUEST, unregistred user!
很幼稚的。就是++i和i++的问题。
那位有很详细的介绍,我的书只是一笔带过。
以前只学过DELPHI不太理解这个问题,能不能介绍一下。
我写了一小段代码:为什么结果是2而不是3,我认为在i=i+(i++)中左面第3个i为1,然后++,所以左面第2个i应该为2,所以应该是i=2+1,但为什么实际上不是。如果结果等于2的话,那么++这个运算岂不是不岂不是不起作用了?
using System;
namespace ConsoleApplication1
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Sample
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
int i=1;
i=i+(i++);
Console.WriteLine("{0}",i);
Console.ReadLine();
}
}
}
 
很幼稚的。就是++i和i++的问题。
那位有很详细的介绍,我的书只是一笔带过。
以前只学过DELPHI不太理解这个问题,能不能介绍一下。
我写了一小段代码:为什么结果是2而不是3,我认为在i=i+(i++)中左面第3个i为1,然后++,所以左面第2个i应该为2,所以应该是i=2+1,但为什么实际上不是。如果结果等于2的话,那么++这个运算岂不是不岂不是不起作用了?
using System;
namespace ConsoleApplication1
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Sample
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
int i=1;
i=i+(i++);
Console.WriteLine("{0}",i);
Console.ReadLine();
}
}
}
 
i++是先完成对i的计算后才对i做++运算的,所以左面第二个i为1,也就是i=1+1
 
其实简单地说,++i和i++的区别就是,一个是求值后再加1,一个是先加1后才求值而已
 
大哥,这是C语言的问题
i++是先把i赋值,然后再进行++的运算
而++i是先运算++(即先进行+1的运算),然后再赋值给i
 
接受答案了.
 
后退
顶部