C语言,求过程。

5. 以下程序的输出结果是  。
main() 
  {int  s,i;
    for(s=0,i=1;i<3;i++,s+=i);
    printf("%d\n",s);}

输出的结果是5。

分析:

    这题要注意的是,for循环的最右边有一个分号“;”,说明循环体是空语句,即循环体什么都不执行。

    主要是考查对循环三个表达式和逗号运算符的理解。

    一般来说,i++是先使用 i 的值,最后再 +1。但在这题的第三个循环表达式(最右边)中,有 i++, s += i,因为它们之间有一个逗号运算符,逗号运算符的特性是让 i 完成 +1 操作后再先执行 s += i。其实相当于把 i++和 s += i 分成两条语句,执行完一条再执行下一条。

运算过程:

    s = 0,i = 1。

    判断 i < 3,即 1 < 3 为真。

    执行 i++,s += i,此时 i = 1,s = 0,先执行 i + 1,再执行 s += i;此时,i = 2,s = 2。

    判断 i < 3,即 2 < 3 为真。

    执行 i++,s += i,此时 i = 2,s = 2,先执行 i + 1,再执行 s += i;此时,i = 3,s = 5。

    判断 i < 3,即 3 < 3 为假,退出循环,输出 s 的值。

测试结果

温馨提示:答案为网友推荐,仅供参考
相似回答