奇怪的问题
namespace ConsoleApplication1
{
class Class1
{
static void Main(String[] args)
{
int i=0;
i=i++;
Console.WriteLine(i.ToString());
}
}
}
按照我的理解,这时i应该等于1才对啊,为什么输出0
namespace ConsoleApplication1
{
class Class1
{
static void Main(String[] args)
{
int i=0;
i=i++;
Console.WriteLine(i.ToString());
}
}
}
按照我的理解,这时i应该等于1才对啊,为什么输出0
解决方案 »
- 急急急!!麻烦各位高手。在网上下的模版,然后我在模版中添加table,table都没有边框
- 问一个关于枚举的小问题
- 用C#做的文件管理系统如何获取文件夹路径
- 小问题,C#关于FOR循环的问题.
- 如果将一个数据库的两个表中的数据在一个DataGrid控件上显示
- 怎样把DataSet转成DBF数据库??
- 请各位做个商业C#项目的前辈帮我一个忙
- 自己做的一个小工具,调试ACCESSR 的SQL,希望大家喜欢
- .MaxLength=64,意思是只能输入64个字母或中文,现在我要控制它只能输入64个字母32个中文怎么办?
- 在webform中怎样从DataGrid选中的行中,读取某列的数据?
- 如果有一个URL如http://www.google.com 用.net C#中的那个类的那个方法 可以得到网页的内容?
- 50分 菜鸟问题: 2005中 web移动from 如何让textbox保持焦点?
把这几句话放到C/C++中调试,结果就是1
++i 先加后赋值
如
int i=0;
while(i++<5)
{
int b=i; //b 1-5
}
while(++i<5)
{
int b=i;//b 1-4
}
最保险的写法 i=i+1 i+=1;
1)i=0
2)i=i+1
意思.而是
1)i=0
2)0++所以i=0
相当于: (1) 先计算右边,即i++ , 结果是 i 的值等于了1, 但是i++ 返回的是0
(2) 经过了(1),再把i++的返回值赋给i,所以i有变成了0
在C语言中这个结果就是等于1
按逻辑分析应该是1的
i=i++
1、i=i
2、i++
这时候i是多少?应该是1
但是执行好象是 i=i 并没有执行 i++
如果你写成
namespace ConsoleApplication1
{
class Class1
{
static void Main(String[] args)
{
int i=0;
i++;//把赋值去掉
Console.WriteLine(i.ToString());
}
}
}
这样会输出什么?1
所以这里是不是有错误啊?
{
class Class1
{
static void Main(String[] args)
{
int i=0;
i=(int)Math.Pow(2,i++);
Console.WriteLine(i.ToString());
}
}
}
i=i++;应该看成:int i=0
int a=i;
i++;
i=a;
i=(int)Math.Pow(2,i++);
Console.WriteLine(i.ToString());
中的 i=0 --> i=3
中间有出栈和入栈操作,
i首先出栈,被赋值之后i=i入栈
最后的i++的操作完了之后没有入栈
所以i的值不变。
i=i++;
Console.WriteLine(i.ToString());你可以试试
int i=0;
i=++i;
Console.WriteLine(i.ToString());
看看他们的区别。
所有的程序执行都是从左到 右的执行,
而且i++是先赋值再执行,我可以告诉你,你如果在Console.WriteLine(i.ToString());的后面重复写一条该语句
输出的值是不同的输出的值 分别是0和1
不相信的你试一下
所以先运算++ , i++ 是 先取值在自身 ++ ,所以先把i 赋予一个临时变量,在自身++ i=1 ,
再运算= ,把临时变量0 赋予i, i=0;
namespace ConsoleApplication1
{
class Class1
{
static void Main(String[] args)
{
int i=0;
i=i++;
Console.WriteLine(i.ToString());
}
}
}
结果:0
namespace ConsoleApplication1
{
class Class1
{
static void Main(String[] args)
{
int i=0;
i=i++;
i=i+0;
Console.WriteLine(i.ToString());
}
}
}
各位高手,结果是什么? 这时候,i是不是就等于1了???请各位指教...多谢