c语言,字符串问题和while循环

while(*string);就这一句为什么就可以了?没有判断请问while函数的代码是怎样的啊... while(*string);
就这一句为什么就可以了?没有判断
请问while函数的代码是怎样的啊
展开
 我来答
XoriieInpottn
2014-08-24 · TA获得超过494个赞
知道小有建树答主
回答量:153
采纳率:100%
帮助的人:153万
展开全部
下面的三种写法是等效的:

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都是人为规定的。
来自:求助得到的回答
蝶心恋海
2014-08-24 · 超过15用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:27.2万
展开全部
*string是一个指针,最开始指向字符串的第一个字符,注意下面的*string++,此时已经将指针指向移动到下一个字符,因为字符ASCN码是整数大于0,判断为真,继续循环,字符串结尾自动添加‘\0’表明结束,指针增加到这里时,判断为假,循环结束,count刚好是个数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
昔姝功孤云
2020-02-06 · TA获得超过3627个赞
知道大有可为答主
回答量:3186
采纳率:31%
帮助的人:467万
展开全部
就这一句就够了,字符串的尾部都有字符"\0"代表字符串结束,对应bool值得false,当到达string尾部时,*string
就是
"\0"
相当于一个false。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dubainiwo
2014-08-24 · TA获得超过1079个赞
知道小有建树答主
回答量:1002
采纳率:0%
帮助的人:373万
展开全部
指针不为空就算是true
指针为空就是flase, 跳出循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式