首页 新闻 赞助 找找看

关于C++的一个问题

0
悬赏园豆:10 [已解决问题] 解决于 2015-03-30 09:00

cout<<tolower(ch);这样写为什么不可以
为什么这样写是对的  ch=tolower(ch);cout<<ch;

 

while (!isalpha(ch)) continue; 与 if (isdigit(ch)) { cin.get(ch); } 它们两个有什么不同
c++
HarrietWong的主页 HarrietWong | 初学一级 | 园豆:193
提问于:2015-03-29 18:14
< >
分享
最佳答案
1

问题1

tolower返回值是int类型,因此你的两种写法并不等价。ch=tolower(ch)实际上是有一个隐式类型转换的,它等价于 ch=(char)tolower(ch)

因此,把最开始的代码写成 ‘cout << (char)tolower(ch);’ 就能正确输出了。

 

问题2

isalpha是判断字符是不是英文字母,范围是a-z + A-Z,而isdigit判断字符是否是数字,它的范围是0-9, 但字符并非只有数字和字母,在字母和数字范围外的字符,!isalpha(ch) 并不等价于 isdigit(ch)。例如,对于字符'#',这两个函数的输出结果就不一样。

收获园豆:10
天方 | 大侠五级 |园豆:5407 | 2015-03-30 00:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册