A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 wawsc5354524 于 2014-8-5 00:28 编辑

for(cout=0;cout<10;cout++){
   cout=cout++;
}

我觉得程序运行的结果应该是9可是为什么答案是0呢?


谁可以详细的解释一下i++和++i,小弟初学者,不好意思,问题有点简单的让大神笑了,哈哈

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 淡定

查看全部评分

27 个回复

倒序浏览
1、首先你for循环里的cout没有声明类型 当然我不知道你是不是还有其他代码在上面声明了cout 你这个循环cout输出肯定是将0~9输出。
2、i++和++i在单独使用的时候没有什么区别,都是i=i+1,但是如果用于赋值的时候,比如y=i++,则是先赋值再计算,拆开就是:y=i,i=i+1,所以y的值还是i,并没有+1;如果是y=++i,这是:i=i+1,y=i,这样y的值就是i+1之后的结果。

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 答得有点跑题了

查看全部评分

回复 使用道具 举报 1 0
1楼解释的非常清楚了!
回复 使用道具 举报
大成哥 发表于 2014-8-4 11:09
1楼解释的非常清楚了!

嗯,我也看到了,学习了
回复 使用道具 举报
fxwb2005 发表于 2014-8-4 11:02
1、首先你for循环里的cout没有声明类型 当然我不知道你是不是还有其他代码在上面声明了cout 你这个循环cout ...

谢大神给予回答,请收下我的膝盖
回复 使用道具 举报
wawsc5354524 发表于 2014-8-4 11:14
谢大神给予回答,请收下我的膝盖

不是大神,也是只有些基础,相互学习!
回复 使用道具 举报
count 声明不清楚  。。。1楼正解
回复 使用道具 举报
1楼解释好清楚,我一开始看到这个问题,还没注意到“cout没有声明类型”只是思考提的问题去了,看来我考虑问题还是不全面:lol。看来我还得继续努力:(
回复 使用道具 举报
会飞De石头 发表于 2014-8-4 11:20
count 声明不清楚  。。。1楼正解

新手啦,不好意思,有很多漏洞。继续学习继续学习
回复 使用道具 举报
这里暴露出一个问题,如果是int count=0;for(int x=0;x<10;x++){}
回复 使用道具 举报
扛把子 发表于 2014-8-4 11:27
这里暴露出一个问题,如果是int count=0;for(int x=0;x

大括号里面是count=count++;
这时候大家觉得结果是什么呢?
回复 使用道具 举报
扛把子 发表于 2014-8-4 11:28
大括号里面是count=count++;
这时候大家觉得结果是什么呢?

为什么会出现这样的结果呢?
回复 使用道具 举报
扛把子 发表于 2014-8-4 11:28
大括号里面是count=count++;
这时候大家觉得结果是什么呢?

结果是0   count变量自增1的动作必须完成并写入内存后,才会把count++表达式的值0赋值给count,因此count最后的值是0
回复 使用道具 举报
学的好细啊。。。
回复 使用道具 举报
没声明 cout能编译通过??
回复 使用道具 举报
i++是先使用i 的值,然后使i加1,++i是先让i加1然后再使用i的值,不管i++,还是++i最后都会使i加1
回复 使用道具 举报
首先説不知道你怎么説的这个结果!我运行了下!在cout=cout++后面加了个输出cout     结果是1--9!但是我不得不説的问题是你这名 cout=cout++;这名代码我试着把for里面的cout ++删除然后动行结果死循环0输出!就这个结果而言你这句代码应该是有问题的,cout=cout++;优先级来看,先是cout++计算,然后cout+1;这过程中还有个步骤就是cout=cout;(0=0)的赋值过程!没有意义,cout+1运算了但是没有保存!所以你这句代码完全是没有必要存在的
回复 使用道具 举报
++i 和 i++一楼第二条讲的很清楚! 你説结果是0我觉得你还是把源码贴出来大家才能邦你找到原因
回复 使用道具 举报
本帖最后由 南国 于 2014-8-8 20:52 编辑

第一个问的回答:因为你前面应该定义了int count=1,在哪呢?count的作用域从结果来看应该是一个全局变量,然后你定义了一个方法,方法中用到了count,这里面count也可以这样看(int i=count)i是方法的局部变量,作用域为方法范围,count的值不改变,原题应该是这样(简略写下哈)mian(String[] args){int count=1;//count定义在方法外,
method(count);方法结束,count将值传给method方法,自身并没有变化
sop(count)//结果为1
}

public void method(int count){//这里的count是形式参数,随便是个啥,s/t/sm都行只要符合命名规则
for(count=1;i<10;i++){
   count++;//你在这里输出count看看
}
//还有这里count是9
}
可以好好研究作用域,实参,形参还有局部变量、全局变量的定义及运用
i++先运算后加1,++i先加1后运算,单独存在,没区别
回复 使用道具 举报
i++ 是先使用i的值,然后+1;而++i是使用前先+1 然后再使用其值~这是我的理解~~:)
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马