额……又有一个C问题了~这个不好理解~
#include "stdio.h"
main()
{
int i;/*定义一个整形变量i,在内存中为其分配两个内存空间*/
for (i =1;i < 40;i ++)/*for循环*/
{
if( i++ % 5 == 0)/*如果i除5的余数等0,进行下一步*/
if( ++i % 8 == 0)/*i+1的和除8的余数为0,进行下一步*/
printf("%d",i);/*输出i,到此处程序其实已经结束了*/
}
printf("\n");/*输出回车换行符,对最后结果是没有影响的*/
}
谁能分析一下运行过程吗??我暂时理解有点困难
续:运行的结果是32。有同学说应该加上\n,那我就把原例中的\n给加上了
#include "stdio.h"
事实上,我学到的c让我这样写:
#include <stdio.h>
然后下面的main()什么的就跳过了,我觉得有意思的是i++ % 5 == 0;和++i % 8 == 0;
i++和++i都是递增,在执行i++后的i与执行++i后的i数值一样。
但有一点不同的是:如果你输出i++和++i,它们的结果并不相同!在输出i++时,先输出i的值,然后再执行递增,而++i却是先执行递增,再输出i的值!这样,i++与++i的值并不相同!
看一下楼主的代码,for循环会被执行39次,而i的值要符合以下的if语句:
1,i % 5 == 0;//也就是i要被5整除。
2,(i + 1) % 8 == 0;//i + 1要被8整除。
然而,在上面的for循环中,i的值不能同时满足这两个条件,所以最后将什么都不会被输出!
i++好像是先输出i的值,再执行递增。
这样,当i在for循环中的值为30时,i++的值为30,满足30%5==0;,而在执行后,i会递增,所以在下面输出i的值为31,然后是++i,++i会先递增,再输出i的值,所以++i的值为32,在++i % 8 == 0;之后,i的值为32。