C语言for循环语句执行顺序

#include<stdio.h>main(){chars[]={"012xy"};inti,n=0;for(i=0;s[i]!=0;i++){if(s[i]>='a'&... #include <stdio.h>
main()
{
char s[]={"012xy"}; int i, n=0;
for (i=0;s[i]!=0;i++)
{

if(s[i]>='a' &&s[i]<='z')
{
n++;
}
}

printf("%d\n",n);
}
因为s[0]=0,所以按理说循环体应该不会被执行,但为什么最后输出的n是2呢?
展开
 我来答
潮范君
推荐于2017-09-13 · 知道合伙人软件行家
潮范君
知道合伙人软件行家
采纳数:1440 获赞数:2874
从事软件开发工作一年有余,主要C++方向。

向TA提问 私信TA
展开全部

如for循环 如下:

for(int i=0;i<10;i++)

{

    循环体

}

执行数序是:

  1. i=0  初始化初值

  2. i<10 进行判断,如果条件为真,则继续执行

  3. 执行循环体代码

  4. i++ 变量i自增

  5. 回到第2步,一直循环下去,直到第2步为假, 退出循环.

文若轻风_
2014-03-01 · TA获得超过104个赞
知道答主
回答量:58
采纳率:0%
帮助的人:38.6万
展开全部
先计算i++后,才判断s[0]是否为0的!第一次判断是s[1],当然会执行循环体了!
追问
谢谢,不过循环体中加printf("i=%d\n",i);之后,输出的i是从0开始的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
澶漫1
推荐于2017-10-08 · 超过58用户采纳过TA的回答
知道小有建树答主
回答量:99
采纳率:0%
帮助的人:116万
展开全部

s[0]=0是错误的

s[0]应该等于48

因为

字符‘0’的asii值是48

可以执行以下代码进行测试

#include<stdio.h>
main()
{
    char a='0';
    printf("%d\n",a);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
_kent
2014-03-01
知道答主
回答量:9
采纳率:0%
帮助的人:12.5万
展开全部
s[i]=0中的0是int类型的0,而s[]是char类型的数字,里面的'0'是字符'0',转换为int为48
应该改为s[i]!='0'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ZF0412
2014-03-01 · TA获得超过165个赞
知道答主
回答量:47
采纳率:0%
帮助的人:21.1万
展开全部
for(1;2;3){
4
}

1 2 4 3 2 4 3 2 4 3 2 4..... 就这么执行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式