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呢? 展开
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呢? 展开
展开全部
先计算i++后,才判断s[0]是否为0的!第一次判断是s[1],当然会执行循环体了!
追问
谢谢,不过循环体中加printf("i=%d\n",i);之后,输出的i是从0开始的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
s[0]=0是错误的
s[0]应该等于48
因为
字符‘0’的asii值是48
可以执行以下代码进行测试
#include<stdio.h>
main()
{
char a='0';
printf("%d\n",a);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
s[i]=0中的0是int类型的0,而s[]是char类型的数字,里面的'0'是字符'0',转换为int为48
应该改为s[i]!='0'
应该改为s[i]!='0'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for(1;2;3){
4
}
1 2 4 3 2 4 3 2 4 3 2 4..... 就这么执行
4
}
1 2 4 3 2 4 3 2 4 3 2 4..... 就这么执行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询