while(str&0x80)while是什么意思啊?

最近在公司看代码,看到一个字符串长度统计的代码,如下

其中关于0x80 != (0xC0 & ch)的判断,百思不得其解,按照ansi表的标准解释来看,0~127位足以表达对字符数目的统计,也就是说用如下代码

足以判断这個ch是不是一个字符,因此那种复杂的写法理论上不只是做ansi字符的判断,最后四处爬资料,最后得到如下信息,在这里写下来以供自己备忘

其中关于位运算的知识,各位请自行脑补,度娘,谷哥,我这里只想说那个运算的目的

0xC0也就是1100, 这个&运算判断的是下一个ch的头两位是什么字符, 因为11能完全反映絀本来的数字

对于普通的ansi字符(非扩展集)而言,他的头一位一定是0( ~ )

对于UTF-8字符而言,因为UTF-8编码是一种多字节序的形式,他采用如下的数字序规律

所有10咑头的在UTF-8里面,表示都是一个多字节序的子序

三个则是1110开始,后面跟三个10XXXXXX来表示字符

所以在计算字符串个数的时候,只需要判断当前字符是不是等于10开头,不等于10开头就一定是一个单字符或者一个多字符,然后计数器+1即可

加载中请稍候......

意思是如果这个表达式为真则S=S+1.題目上输入的三个字符串只有"A"$"ABCD"为真,所以只执行了一次S=S+1=0+1=1 3. 自己一步步逻辑推算吧,用语言描述起来太烦了

免费查看千万试题教辅资源

当str存放的数据二进制第7位不为0时循环

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

我要回帖

更多关于 while是什么意思啊 的文章

 

随机推荐