for循环的三个表达式
来源:互联网 发布:2017网络最新最火的词 编辑:程序博客网 时间:2024/05/16 04:58
首先我们我来一段代码,看看它有什么错误:
for(i = 0,printf("First = %d\t",i);i < 5,printf("Second = %d\t",i);i++,printf("Third = %d\t",i)){printf("Fourth = %d\n",i);}
有没有感觉for循环里面的表达式好复杂,但是语句绝对没有错误,编译没有错误,但是运行呢?
但是是一个死循环,一直都跳不出来。
问题在于for循环的语句形式是:
for(表达式1;表达式2;表达式3){}
而表达式1和表达式2都是逗号表达式,逗号表达式的用法不细说了,最终的值是最后一个表达式的值。
也就是printf这个函数的返回值,printf的函数的返回值是打印出来的字符的个数。
来看我调试的结果:
当i=0时,for循环体内执行后:
1)执行表达式3: i++; i=1,printf表达式的值是“Third = 1”数一下是9个字符,有两个空格,别忘了还有后面的“\0”,总共是10个字符。
2)然后计算表达式2: i<5, printf表达式的值是“Second = 2”是11个字符,表达式=11,为真,进入循环体。
3)执行循环体输入i,然后再是表达式3,i++; i=2;
因为表达式2的值永远为真,所以循环一直在运行,我改了一下可以参考:
int main(){int i;for(i=0;i<3;i++){printf("i=%d\n",i);}for(i = 0,printf("First = %d\t",i);printf("Second = %d\t",i),i < 5;i++,printf("Third = %d\t",i)){printf("Fourth = %d\n",i);}printf("\n");printf("2/(-2) = %d\t",2/(-2));printf("2%%(-2) = %d\t",2%(-2));system("pause");return 0;}
看一下运行结果:
说明:
1)表达式1的first是赋初值,只执行一次。
2)表达式2Second是条件判断,条件满足执行循环体,然后再是表达式3,注意顺序。
3)从结果可以看出第一次的顺序是1,2,4,3 再后面的顺序是:
2(表达式2),4(循环体),3(表达式3)
2(表达式2),4(循环体),3(表达式3),
直到最后判断表达式2的结果为假,循环退出。
0 0
- for循环的三个表达式
- for循环中三个表达式都为空的例程
- 关于for循环中三个语句的执行顺序
- for的死循环(逗号表达式)
- for循环 逗号表达式
- js循环处理的表达式 for、for in、while
- lua for循环的三个条件在第一次循环前一次性求值
- jsp el表达式,for循环
- for循环中表达式和循环体的执行顺序
- 第一周、课时12:js三个循环之for循环
- 三个python内置函数,帮你设计灵活性更强的for循环
- 快3中,下注两个数字,与开奖的三个数字对比,for循环判断
- 【for循环】增强的for循环
- 正则表达式,与.及增强for循环
- for循环的疑问
- for循环的漏洞。
- 有意思的for循环
- 截然不同的for循环!
- html5 IndexedDB
- PendingIntent
- [c++]c++程序设计-Y.Daniel.Liang 笔记
- 装饰模式
- Selenium初体验(基于Java)
- for循环的三个表达式
- java设计模式之代理模式 (静态&动态)
- 蛇形填数 递归
- Android网络开发之HttpURLConnection
- 生活感触——锻炼中的坚持
- Fragment
- 【图】BFS和DFS
- C#中两个窗口怎么传递参数?或者怎么使用另一个窗口的控件呢?
- 51nod 1387 移数字(多项式除法)