首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

1和'1'有什么区别

2012-02-19 
求助:1和1有什么区别1和1有什么区别,看C语言教材,发现这样的例子for (i 1 s[i] 0 && s[i]

求助: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码

热点排行