偶然发现的for循环的问题,求高手解答

大智_Unity玩家 2010-06-06 11:39:15
下面这段代码的输出为:
iiiii=0
aaaaa=1
aaaaa=1
想请高手解释下为什么第一个for循环没有执行而且i的值也没有变化?

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int a[4] = {0,0,1,1};
int b[4] = {1,2,3,4};
int c = 4;
int i = 0;

for(i=0; (i<c) && (a[i]==1); ++i)
{
printf("aaaaa=%d\n",a[i]);
}
printf("iiiii=%d\n",i);

for(i=0; i < c; ++i)
{
if(a[i]==1)
{
printf("aaaaa=%d\n",a[i]);
}
}
system("pause");
}

...全文
100 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
大智_Unity玩家 2010-06-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xxqi1229 的回复:]
初始化条件:
c=4;
a[0]=a[1]=0;
a[1]=a[2]=1;

for(i=0; (i<c) && (a[i]==1); ++i)
{
printf("aaaaa=%d\n",a[i]);
}
进入for循环后第一次(i=0)判断 (i<c)&&(a[i]==1)为假 程序就不执行i++了
直接退出这个for循环。
哥们建议好……
[/Quote]
明白了,看来理解有问题,谢谢大家了
没花鹿 2010-06-06
  • 打赏
  • 举报
回复

for(i=0;i<c;++i)
if(a[i]==1) printf("...");
东莞某某某 2010-06-06
  • 打赏
  • 举报
回复
想输出1,这样用:

    for(i=0; i<c; ++i)
{
if( 1==a[i])
{
printf("aaaaa=%d\n",a[i]);
}
}
阿磊2013 2010-06-06
  • 打赏
  • 举报
回复
很明显的嘛,不解释
东莞某某某 2010-06-06
  • 打赏
  • 举报
回复
是啊,i=0的时候,a[i]!=1,

(i<c) && (a[i]==1)为假,就直接退出循环了!
xxqi1229 2010-06-06
  • 打赏
  • 举报
回复
初始化条件:
c=4;
a[0]=a[1]=0;
a[1]=a[2]=1;

for(i=0; (i<c) && (a[i]==1); ++i)
{
printf("aaaaa=%d\n",a[i]);
}
进入for循环后第一次(i=0)判断 (i<c)&&(a[i]==1)为假 程序就不执行i++了
直接退出这个for循环。
哥们建议好好想想for循环式怎么回事.你肯定是认为判断条件为假后,继续执行i++了!
基础....
大智_Unity玩家 2010-06-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 happytang 的回复:]
i<c) && (a[i]==1)
判断表达式不为真;a[0]=0
[/Quote]
我想知道的是,表达式不为真不是应该i++,然后接着判断是否为真,当i=3时,a[3]=1时应该输出的吧,难道判断为假的时候就会直接break了?
tsh185 2010-06-06
  • 打赏
  • 举报
回复
i=0 时 a[i]=0 不等于1 故for 没有执行循环 你用的是 && 表示 and 要两边同时为真才会执行
happytang 2010-06-06
  • 打赏
  • 举报
回复
i<c) && (a[i]==1)
判断表达式不为真;a[0]=0
tsh185 2010-06-06
  • 打赏
  • 举报
回复
for(i=0; (i<c) && (a[i]==1); ++i) // (a[i]==1) 为假 就没有执行了

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧