hzbn.net
当前位置:首页>>关于C语言 while(*t++)为什么能跳出循环?的资料>>

C语言 while(*t++)为什么能跳出循环?

*t是一个char类型指针,有长度范围,到了一定程度就会数据溢出,然后*t就会小于0,然后不停的++,总有等于0的时候,也就是循环跳出的时候

while()是循环语句,t是判断条件,当t为真或非0的话,执行循环,否则退出循环,比如t=1,循环会持续执行,t=0则退出循环,或者 t 可以是其他判断语句,满足ture时执行循环,为false则退出循环

t--是自减运算,是每次t自身减1 while(t--)就是当t自身减到0就退出循环。

先将s指的值赋给t,再看t是否不等于空,是则执行while下面的语句,否则跳出while循环! 示例如下,长度为5,所以只有前五次不等于空,所以只输出了五个OK:

while(*s++=*t++) 这里实现了四个操作。 1 *s = *t, 即将s指向内存赋值为t指向内存的值; 2 执行s的自加操作; 3 执行t的自加操作; 4 判断执行自加前的*s值,如果*s为0,那么退出循环。 可以写成等价的for循环。 for(; *s; s++, t++) *s = *t;

while(*t++); 相当于 while(*t++ != 0 ); 即当*t不为0时循环! 字符串结束符是\0, 按数值来说就是0

等价于while(t=t+1,*(t-1));——我只是说while(t=t+1,*(t-1));和while(*t++);功能完全一样。而while(*t++);是先判断*t是不是0,然后再t=t+1,而且无论*t是否为真,t=t+1都要执行。

#include int main() { int i = 0,t = 1; while( t

#include int main(void ){ int m,n,i, b, t; char ch; printf("Input the max number:\n"); scanf("%d", &t); do { b = 1; n=rand()%t +1; for(i=1; ; i++) { printf("Input number between %d - %d: ", b, t); scanf("%d",&m); if(m==n) break...

#include void main() { int x = 1, y = 1; while (x

网站首页 | 网站地图
All rights reserved Powered by www.hzbn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com