在c语言中字符与数字的有关问题:0与‘0’的区别

程序中有如下几个语句:已定义char*s;s为输入一串数字字符串的指针,例如32486,目的是要输出d=32486;然而d=d*10+*s-'0';s++;与d=d*10... 程序中有如下几个语句:已定义char *s ;s为输入一串数字字符串的指针,例如32486,目的是要输出d=32486;然而
d=d*10+*s-'0';
s++;
与d=d*10+*s-0;
结果不同,加引号为正确,请高手解答。谢谢!
展开
 我来答
床前明月儿
高能答主

2019-09-27 · 探索生活中的另一种可能
床前明月儿
采纳数:101 获赞数:171950

向TA提问 私信TA
展开全部

一、数据类型不同

1、0:代表数字0。

2、‘0’:代表字符0。

二、计算能力不同

1、0:具有计算能力。

2、‘0’:是不具计算能力的文字数据类型。


三、内存存储不同

1、0:由数字、小数点、正负号和字母E组成,用字母N表示。数值型数据的取值范围是:-0.9999999999E+19+到0.9999999999E+20,包括正负号、小数点和字母E在内,其长度最大20位。

2、‘0’:包括中文字符、英文字符、数字字符和其他ASCⅡ字符,其长度(即字符个数)范围是0-255个字符,即0x00至0xFF。


参考资料来源:百度百科-数值型数据

参考资料来源:百度百科-字符型数据

zhzht_2008
推荐于2017-09-17 · TA获得超过2112个赞
知道小有建树答主
回答量:522
采纳率:100%
帮助的人:245万
展开全部
0是数值型,而‘0’是字符型,两者在数据类型上不同
如果都用十六进制表示,数值0表示为0x00,字符'0'表示0x30(可以查ascii码)
在C语言中,会检查数据的类型并有专门的关键字,数值型的如int、long,浮点型的如float、double,字符型的如char,区分这些类型是了解C的第一步。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
veket_linux
推荐于2017-09-29 · TA获得超过4092个赞
知道大有可为答主
回答量:3809
采纳率:0%
帮助的人:4491万
展开全部
请注意 ASCII的编码
字符 对应的ASCII码(10进制)
'0' 48
'1' 49
'2' 50
'3' 51
......
'8' 56
'9' 57

输入是字符串"32486",
要把这个字符串装换为数字
3*10000 + 2*1000 + 4*100+8*10+6
个十百千万 位上的 数字 怎么来?
例如 万位 的3
要把字符'3' 转为 数字 3
ASCII表里 '0' 到 '9'是相邻、连着的
'1' 比 '0' 大 1
'2' 比 '1' 大 1 '2' 比 '0' 大 2

所以 '3' - '0' 就得到'3'对应的数字3,
再来看'3' - 0是多少 ,'3' 的ASCII码是 51 ,51 - 0 等于 51显然 不对

注意 字符 在内存中是数字 字符型是 特殊的整形
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
BYSF_XF
2011-03-10 · TA获得超过824个赞
知道小有建树答主
回答量:689
采纳率:33%
帮助的人:531万
展开全部
肯定不同呀,0的值还是0 而'0'的值是按它的ASCII码值来算的,注意ASCII表示的都是字符
追问
谢谢!那么说在进行加减法时是要按它的ASCII码值来算咯?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a1012144015
2015-05-23 · TA获得超过6415个赞
知道大有可为答主
回答量:9038
采纳率:40%
帮助的人:1357万
展开全部
一个是数字0,一个字符0。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式