|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 深夜求解疑问:
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
700
人关注过本帖
标题:
深夜求解疑问:
只看楼主
加入收藏
qpalqpal
等 级:
新手上路
帖 子:14
专家分:1
注 册:2010-8-7
结帖率:
75%
楼主
收藏
已结贴
√
问题点数:10 回复次数:5
深夜求解疑问:
#include<stdio.h>
void main()
{
int i,j=3;
for(;i=j;i--,j--)
printf("%d\n",i);
}
这题输出的是 3
2
1
为什么不是一直减下去,减到-32768呢?
搜索更多相关主题的帖子:
求解
疑问
2010-08-09 00:00
举报帖子
使用道具
赠送鲜花
xxwpk007
等 级:
业余侠客
帖 子:166
专家分:289
注 册:2007-7-29
第
2
楼
收藏
得分:3
到0就为假了
2010-08-09 00:05
举报帖子
使用道具
赠送鲜花
星舞突击者
等 级:
论坛游民
帖 子:15
专家分:68
注 册:2010-7-30
第
3
楼
收藏
得分:3
楼上正解,for循环的第一个分号后就是一个判断,跟if一样,第一次i=3,为真,执行循环体,输出3,i--后变为2;还是为真,再执行循环体,输出2,i--后变为1;为真,输出1,i--变为0;再次判断时为假跳出循环,我是这么理解的
2010-08-09 00:28
举报帖子
使用道具
赠送鲜花
hackerjiang
来 自:地球
等 级:
版主
威 望:
3
帖 子:780
专家分:111
注 册:2007-4-27
第
4
楼
收藏
得分:4
楼主的疑惑主要是:存在真假问题的一般是判断表达式,没有遇到过赋值表达式存在真假问题的情况。
其实,赋值语句确实不存在真假问题,那么C编译器是此刻是怎样处理 赋值语句 的?
我给楼主一段小代码,在VC6下通过编译,楼主自然会明白的:
图片附件: 游客没有浏览图片的权限,请
登录
或
注册
再来看看结果
图片附件: 游客没有浏览图片的权限,请
登录
或
注册
其实,不仅仅是赋值语句,甚至printf也可以出现在FOR循环中,对于这类不存在真假问题的语句,编译器处理的方式仅仅只是执行而已,不存在判断问题。
如果仅仅只有一个赋值语句,比如你给的例子,你可以看成是:for(;i=j,i;i--,j--),运行的结果还将回事一样的。
对了,补充一下:实验二的循环只执行了一次,判断了两次。第一个0和最后一个0都是判断输出,第二个0才是循环输出,所以一共有3个0。
[
本帖最后由 hackerjiang 于 2010-8-9 01:37 编辑
]
(づ ̄ 3 ̄)づ
2010-08-09 01:28
举报帖子
使用道具
赠送鲜花
qpalqpal
等 级:
新手上路
帖 子:14
专家分:1
注 册:2010-8-7
第
5
楼
收藏
得分:0
谢谢你们,我明白了。
2010-08-09 09:08
举报帖子
使用道具
赠送鲜花
sunyh1999
等 级:
版主
威 望:
14
帖 子:1178
专家分:3032
注 册:2009-5-17
第
6
楼
收藏
得分:0
汗,到0就为假了,所以条件不成立,跳出循环
欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-08-09 09:09
举报帖子
使用道具
赠送鲜花
6
1/1页
1
快速回复:
深夜求解疑问:
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.025314 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved