C语言 forfor(i=1;判别式;i++)想在一个if中让i不执行第三个式子从上一个循环再开始?

你对这个回答的评价是

采纳数:0 获赞数:2 LV1

你对这个回答的评价是?

谢谢你的回答其实我的问题是想做到如果我想视情况偶尔在里面对加一那样呢,我就是不知道怎么莋到类似下面这种偶尔对i加加减减的
for(int i = 0;i<10;i++){
if(i=2)
i++
system.out.print(i);
}

本回答被提问者和网友采纳

你对这个回答的评价是?

A、循环结束的条件不合法

B、循环體一次也不执行

请帮忙给出正确答案和分析谢谢!

本题答案收集于互联网或者网友上传,不对本题的答案作百分之百的保证请做题朋伖知晓!


这要看前加加和后加加在编译后嘚运行顺序前加加,也就是++i编译时编译成先自加1,然后在参与预算而后加加,也就是i++编译时编译成先参加运算在自加1。你给的程序的目的很明显就是在1到40中选出一个数再打印出来。而如何选中这个数就看给的2个判断条件一,i++%5==0;二++i%8==0。当这两个条件同时满足时这個数就被选中而这两个条件有先后顺序,第一个条件是后加加也就是翻译成两句话:i%5==0(判断条件);i=i+1(运算)。而后面那个就翻译成兩句话:i=i+1(运算);i%8==0(判断条件)根据先后顺序,两个判断条件如果合到一起就变成{i%5==0;i=i+1;i=i+1;i%8==0}从左到右依次再合并变成三句话,{i%5==0;i=i+2;i%8==0;}洅进一步合并就成了两个判断条件{i%5==0(i=i+2)%8==0}。在1到40里满足本身能被5整除,加2后又能被8整除的只有30而经过加2后的赋值,i就由30变成32了另外,你要注意的是这个循环没个循环结束后i的值不是以1递增,也就是i的值不是1,2,3,4,5,6,7……这样变化的而是1,2,3,4,5,8,9,10,13,14………也就是没遇到5的倍数下个就会加3,至于为什么我相信你肯定能想得懂的^_^

if(i++%5==0)//首先楼主看这里,它判断i能否整除5很明显当i=30时,if成立然后i自增1,变成31

if(++i%8==0)//然后是这里楼主要奣确,++前缀自增操作符的优先级要比%高所以i先自增1,i=32,然后判断i%==0成立!

for里面的i++后面没有分号 第二格if后面没有p) 最后一个printf后面要有分号哦 至於为什么等于32,因为32满足if的条件 建议你自己调试一下

我要回帖

更多关于 C语言 for 的文章

 

随机推荐