标题: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-322096-1-1.html




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

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