c语言,字符串问题和while循环
while(*string);就这一句为什么就可以了?没有判断请问while函数的代码是怎样的啊...
while(*string);
就这一句为什么就可以了?没有判断
请问while函数的代码是怎样的啊 展开
就这一句为什么就可以了?没有判断
请问while函数的代码是怎样的啊 展开
4个回答
展开全部
下面的三种写法是等效的:
1、while (*string)
2、while (*string != 0)
3、while (*string != '\0')
while语句后面的条件语句应当是个表达式,在C语言中这个表达式可以是逻辑表达式也可以是数值表达式,当表达式的值为数值时,0表示false,非0表示true
第一种写法的意思就是当string的当前内容是非0时实行循环,等效于第2种
第三种写法是最规矩的,也是最提倡的,可读性强,而且事实上不会降低执行效率,可以这样写的原因是字符串结束符号'\0'的ASCII码是0,你查下ASCII码表就知道了。
1、while (*string)
2、while (*string != 0)
3、while (*string != '\0')
while语句后面的条件语句应当是个表达式,在C语言中这个表达式可以是逻辑表达式也可以是数值表达式,当表达式的值为数值时,0表示false,非0表示true
第一种写法的意思就是当string的当前内容是非0时实行循环,等效于第2种
第三种写法是最规矩的,也是最提倡的,可读性强,而且事实上不会降低执行效率,可以这样写的原因是字符串结束符号'\0'的ASCII码是0,你查下ASCII码表就知道了。
更多追问追答
追问
大牛你知不知道while函数的代码啊,我好奇
追答
while不是函数,是C语言的一种基本流程控制语句,类似的还有for、do...while
具体对应的机器指令我一下也写不出来,但是可以告诉你的是,机器指令里面的跳转指令都是基于判断某个值是不是为0或者大于0来进行跳转的,比如JE、JNE、JBE、JA、JS、JNS...等等,不能像C语言这样判断复杂的表达式值,因此true和false与非0和0的数值对应关系就这么规定的。
机器指令是不存在true和false一说的,所有都是数,所谓true和false都是人为规定的。
来自:求助得到的回答
展开全部
*string是一个指针,最开始指向字符串的第一个字符,注意下面的*string++,此时已经将指针指向移动到下一个字符,因为字符ASCN码是整数大于0,判断为真,继续循环,字符串结尾自动添加‘\0’表明结束,指针增加到这里时,判断为假,循环结束,count刚好是个数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就这一句就够了,字符串的尾部都有字符"\0"代表字符串结束,对应bool值得false,当到达string尾部时,*string
就是
"\0"
相当于一个false。
就是
"\0"
相当于一个false。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
指针不为空就算是true
指针为空就是flase, 跳出循环
指针为空就是flase, 跳出循环
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询