读书人

1和1有什么区别

发布时间: 2012-02-19 19:43:38 作者: rapoo

求助:1和'1'有什么区别


1和'1'有什么区别,看C语言教材,发现这样的例子



for (i = 1; s[i] >= '0' && s[i] <= '9'; ++i)


这样的例子,貌似是有单引号的对应ASCII什么的也没弄清,但是我知道所有的字母和数字在内存里都是一个数字,就是ASCII码。可还是不知道C语言里 1 和 ‘1’有什么区别,例如上面的例子,如果我写成

for (i = 1; s[i] >= 0 && s[i] <= 9; ++i)


去掉单引号,会有什么影响,希望哪些大神能详细说说,这块概念什么的有点混乱。


先谢了~

[解决办法]
其实他们最后都会转换成二进制数,'1'的ASCII码等于数字的49,所以两者不相等
[解决办法]
1是整型(int)‘1’是字符型(char)
首先for (i = 1; s[i] >= '0' && s[i] <= '9'; ++i)中 s[i]>='0'你可以将s[i]和‘1’比较首先将‘1’用ASCII码表转化为ASCII码,然后将s[i]和经过转化的那个数值全部转化为位数较高的类型来进行比较(例如s[i]为整形(int 16位)那么先将‘1’是字符型(char 8位))转化为92(查表)然后全部转化为整形进行比较。

同理 for (i = 1; s[i] >= 0 && s[i] <= 9; ++i) 中 0是整形不用转换直接比较即可
若s[i]为flout型则全部转化为float进行比较。

要点还是类型的转化 如果进行循环的判定的话 将‘1‘用ASCII转化为ASCII码值直接用就行了。


希望采纳^_^


[解决办法]
1是整型
'1'是字符型,和字母'a','b'等等是一样的,只不过它看着像数字。

1在32位计算机内存中存储的是0x0001
'1'的ASCII码为49,在内存中为0x0031
也就是说数字在内存中直接存储的就是数字的值,而字符要存储它的ASCII码

读书人网 >C语言

热点推荐