关于for语句嵌套或是多语句之间的返回,小白求解?

2025-02-24 12:49:35
推荐回答(2个)
回答1:

看你的理解很乱啊,我给你写上注释 你看看
例子1:/*  打出40个“-”,最后/n  */
for(i=0;i<40;i++)        //这个实际上是输出40个 - 
{
printf(“-”);            //而且每个 - 一行,一共是40行
printf(“/n”);            //因为每次输出-,然后就输出换行了
}
 
例子2: /* 这是声明了2个字符型指针,2个char型数组,2个指针指向了数组,他们元素之间的复制*/
for(i=0;*(b+i)!='/0';i++)
{
*(a+i)=*(b+i);        //这样写,那么a所指的char数组永远为'\0'
*(a+i)="/0";        //应该是 *(a+i)=‘\0’;
}
//如果要达到你描述的目的,修改为下面的:
for(i=0;*(b+i)!='\0';i++) //注意 / 和 \是完全不同的
{
    *(a+i)=*(b+i);    //注意是半角; 而不是全角;
}    
*(a+i)='\0';

你理解的太乱了,如果for循环中 你用大括号把语句括起来,那么肯定是每次循环都要执行整个大括号里面的语句。

回答2:

for后面的{ 到 }两个括号中间的是其执行一次所需要执行的代码
for的()第一个是定义变量的起始条件,第二个是跳出循环的条件,第三个是变量变化的条件
拿你第一个例子说明
第一次执行的时候 i=0 输出第一个语句 也就是输出-
第二个语句是在{}里的 所以每一次执行也会输出 只是是个换行 所以你看不出来而已
然后这两条语句执行1次后 i++ 就是i从0变为1
执行到i=39的时候执行最后一次 然后i++到40 不满足条件了 跳出循环
你可以在printf(“/n”);下面加printf(i);打印一下就看的出来i的变化了