while的一个小陷阱
2018-03-12 17:46
169 查看
先看一段代码示例
为了让代码看起来更加的简洁美观,我一直喜欢这样写
看一下结果
![](https://img-blog.csdn.net/20180312171841428?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG9naWNy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
再看一段代码,想想看输出结果是多少。
![](https://img-blog.csdn.net/20180312172508161?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG9naWNy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
这两段代码看完起来似乎一模一样,但是区别在于第一段代码
#pragma warning(disable:4996) # include"copy.h" char * mystrcpy( char * desc,const char * src) { char *ret=desc; assert((src != NULL) && (desc!=NULL)); while (*desc++ = *src++); return ret; }
为了让代码看起来更加的简洁美观,我一直喜欢这样写
while,而且也没出过什么问题。但是这样写是否存在问题,看一下下面这个示例,想一想输出结果是多少?
# include<stdio.h> int main() { int k = 10; while (k--) printf("%d\n", k); }
看一下结果
再看一段代码,想想看输出结果是多少。
#pragma warning(disable:4996) # include<stdio.h> int main() { int k = 10; while (k--); printf("%d\n", k); }
这两段代码看完起来似乎一模一样,但是区别在于第一段代码
while (k--),而第二段中是
while (k--);,在这里的代码段中
while (k--)是错误写法(本意是打印循环结束后的循环变量k),
while (k--);是隐患写法,一旦
while (k--);将
;写漏,那么
while(k--)所表达的意思也就成了
while(k--) { printf("%d\n", k); }
写在最后,在追求美观的同时一定要遵循代码规范,一定不要养成不好的习惯。
相关文章推荐
- 实战中遇到的C++流文件重置的一个大陷阱: 为什么ifstream的seekg函数无效?
- RecyclerView 的一个陷阱
- 操作Cookie的一个陷阱
- java集合中的一个移除数据陷阱(遍历集合自身并同时删除被遍历数据)
- mount.nfs: access denied by server while mounting 一个解决办法
- PDOStatement::bindParam的一个陷阱
- 在使用C语言指针时的的一个不容易发现的陷阱
- 一个C语言的浮点陷阱
- 三案例教你避开装修陷阱 质量保修环保一个不少
- 使用Ubuntu12.04的时候遇到的一个小陷阱
- 远程挂载NFS时mount.nfs: access denied by server while mounting 一个解决办法
- 工行上市是一个极深的陷阱-我开始理解郎闲平的忧虑了
- 陷阱~EF中的Update与Insert共用一个数据上下文
- 计算labview一个while循环的运行时间
- PDOStatement::bindParam的一个陷阱
- 网络通信中,DELPHI的string类型数据转换为C++字符串发送的一个陷阱
- ios调用dismissViewController的一个小陷阱
- Linux复制文件的一个陷阱
- 警惕!Unity3D中UnityEngine.Object的一个小陷阱
- 输入一个数 求0到这个数的阶乘的和 使用 do...while 循环