等大佬解答
#include"stdio.h"void main()
{
char s="11001";int i,t,m=0;
for(i=0;s;i++);
printf("%d",i);
for(i--,t=1;i>=0;i--,t<<=1)
{
if(s!='0')m+=t;
printf("%d",m);}}
这段程序for(i=0;s;i++)这是因为用ASCII值为条件,所以i才会到5? 顺便问下,数字加上‘0'是什么意思? 本帖最后由 jkluoling1992 于 2020-4-19 15:09 编辑
条件判断吧,,这个字符串有5个char, 当到第六个的时候也就是s, 此时它为空字符‘\0’ 空字符对应的数值就是0,因此不满足条件,退出循环, Zichenya 发表于 2020-4-19 14:56
顺便问下,数字加上‘0'是什么意思?
不错,是按ASC码存储的,‘0’的ASC码是48 Zichenya 发表于 2020-4-19 14:56
顺便问下,数字加上‘0'是什么意思?
06, 05,07 这种吗?这种应该是表示八进制吧 Zichenya 发表于 2020-4-19 14:56
顺便问下,数字加上‘0'是什么意思?
数字的字符‘0’的ASCII码是48,一个1加48转字符就是'1',‘1’的ASCII码是49,如此类推,作用就是把数字int转char
将你提供的代码稍微调整下,然后再看,或许就更加的清晰
for(i=0;s;i++);作用是取出当前字符串的长度
方法就是判断 s何时=='\0'
整个代码的作用是将2进制转换为10进制 jkluoling1992 发表于 2020-4-19 15:00
条件判断吧,,这个字符串有5个char, 当到第六个的时候也就是s, 此时它为空字符‘\0’ 空字符对应的数 ...
谢谢。 耻思lhj 发表于 2020-4-19 21:07
数字的字符‘0’的ASCII码是48,一个1加48转字符就是'1',‘1’的ASCII码是49,如此类推,作用就是把数 ...
懂了,谢谢
页:
[1]