Zichenya 发表于 2020-4-19 14:36:42

等大佬解答

#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?

Zichenya 发表于 2020-4-19 14:56:18

顺便问下,数字加上‘0'是什么意思?

jkluoling1992 发表于 2020-4-19 15:00:14

本帖最后由 jkluoling1992 于 2020-4-19 15:09 编辑

条件判断吧,,这个字符串有5个char, 当到第六个的时候也就是s, 此时它为空字符‘\0’ 空字符对应的数值就是0,因此不满足条件,退出循环,

love_qj 发表于 2020-4-19 15:00:56

Zichenya 发表于 2020-4-19 14:56
顺便问下,数字加上‘0'是什么意思?

不错,是按ASC码存储的,‘0’的ASC码是48

jkluoling1992 发表于 2020-4-19 15:11:42

Zichenya 发表于 2020-4-19 14:56
顺便问下,数字加上‘0'是什么意思?

06, 05,07 这种吗?这种应该是表示八进制吧

耻思lhj 发表于 2020-4-19 21:07:10

Zichenya 发表于 2020-4-19 14:56
顺便问下,数字加上‘0'是什么意思?

数字的字符‘0’的ASCII码是48,一个1加48转字符就是'1',‘1’的ASCII码是49,如此类推,作用就是把数字int转char

4goodworld 发表于 2020-4-19 22:48:46


将你提供的代码稍微调整下,然后再看,或许就更加的清晰
for(i=0;s;i++);作用是取出当前字符串的长度
方法就是判断 s何时=='\0'
整个代码的作用是将2进制转换为10进制

Zichenya 发表于 2020-4-21 11:10:53

jkluoling1992 发表于 2020-4-19 15:00
条件判断吧,,这个字符串有5个char, 当到第六个的时候也就是s, 此时它为空字符‘\0’ 空字符对应的数 ...

谢谢。

Zichenya 发表于 2020-4-21 11:20:48

耻思lhj 发表于 2020-4-19 21:07
数字的字符‘0’的ASCII码是48,一个1加48转字符就是'1',‘1’的ASCII码是49,如此类推,作用就是把数 ...

懂了,谢谢
页: [1]
查看完整版本: 等大佬解答