C++简单的编程问题

来源:百度知道 编辑:UC知道 时间:2024/05/07 08:18:41
void read_minute(istream& ins,int& the_minute)
{
char c1,c2;
ins>>c1>>c2;

if(!(isdigit(c1)&&isdigit(c2))
{
cout<<"错误输入";
exit(1);
}

the_minute=digit_to_int(c1)*10+digit_to_int(c2);

if(the_minute<0||the_minute>59)
{
cout<<"非法输入分钟";
exit(1);
}
}

int digit_to_int(char c)
{
return (int(c)-int('0'));
}
请问一下这个函数是什么意思int digit_to_int(char c)
{
return (int(c)-int('0'));
}
还有这个布尔表达式是什么意思 if(!(isdigit(c1)&&isdigit(c2))

第一个,传递进来的参数是一个 char 类型,比如如果是字符 '1' 则转换为整数型就是 49 也就是 '1' 的ASCII编码.

'0'的ASCII是48 所以如果用 int(c)-int('0') 减出来以后就是整数 1 也就是把字符转换为整数了,实际C++有个函数 atoi 推荐使用这个方法,

第二个要拆开看 isdigit(c1) 返回值是否为TRUE,然后 isdigit(c2) 返回是否为TRUE,然后用 && 连接,也就是当两个同时为TRUE时整理才为TRUE,然后用了一个 ! 所以整体上看,当两个中其中一个为FALSE或者两个都是FALSE时候进入IF

isdigit(C)
用来判断C是不是数字 如果是 返回1 如果不是 返回0

return (int(c)-int('0')); 这个写法不敢恭维
直接return c-'0'; 就完全可以了 呵呵

第一个好象有点问题吧 '0'这个能作为函数吗?
第二个问题 意思是 “如果 同时不满足isdigit(c1) 和isdigit(c2)”