| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 778 人关注过本帖
标题:for 循环里的逗号运算符,求指点
只看楼主 加入收藏
jshq
Rank: 2
等 级:论坛游民
帖 子:14
专家分:31
注 册:2010-9-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
for 循环里的逗号运算符,求指点
程序代码:
#include "stdio.h"
int main()
{
    int i,j;
    for (i=1,j=37; i<5; i++,j+=27)/*第一个子表达式:对i,j进行了初始化,*/
    {                             /*第二个子表达式:判断真假;为真*/
        printf("%d\n",j);         /*第三个子表达式: i进行自增运算;j=j+27*/
    }
    return 0;
}

为什么打印的第一个j的值不是64?
为什么结果是这样?
程序代码:
37
64
91
118
Process returned 0 (0x0)   execution time : 0.016 s
Press any key to continue.

请大虾指点迷津!
谢谢
搜索更多相关主题的帖子: 运算符 逗号 
2010-10-06 12:27
Crocodile_JX
Rank: 5Rank: 5
等 级:职业侠客
帖 子:161
专家分:335
注 册:2010-9-13
收藏
得分:20 
#include "stdio.h"
int main()
{
    int i,j;
    for (i=1,j=37; i<5; i++,j+=27)/*第一个子表达式:对i,j进行了初始化,*/
    {                             /*第二个子表达式:判断真假;为真*/
        printf("%d\n",j);         /*第三个子表达式: i进行自增运算;j=j+27*/
    }
    return 0;
}
第一次打印的时候 j 的值肯定为 37 啊。它的过程如下:
首先 i=1,j=37,因为 i < 5,所以执行 printf("%d\n",j);这个语句,即打印 j = 37;
然后,执行 i++,j+=27这个语句,再然后变成 i=2, j=64; 再继续比较,因为i=2<5,所以继续执行printf("%d\n",j);这个语句,即打印 j=64;
以此类推,直到i=5时,因为不小于 5,所以跳出循环。
这样子说 你应该明白吧?呵呵...
2010-10-06 12:54
jshq
Rank: 2
等 级:论坛游民
帖 子:14
专家分:31
注 册:2010-9-25
收藏
得分:0 
呵呵,谢谢指点啊
第三个表达式是在执行玩循环体后才执行
2010-10-06 13:00
wade2006
Rank: 2
等 级:论坛游民
帖 子:49
专家分:27
注 册:2007-1-16
收藏
得分:0 
for循环语句执行的顺序是这样的:
1. 执行表达式1;
2. 判断表达式2的值, 如果值为真,执行循环体, 然后执行表达式3, 然后再执行第二步; 如果值为假, 退出循环.
2010-10-06 13:02
一统江山
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-10-7
收藏
得分:0 
呵呵
2010-10-07 12:27
快速回复:for 循环里的逗号运算符,求指点
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016626 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved