关于cin、cin.get()、cin.get(ch)返回值的问题

1、cin、带参数与不带参数cin.get()的返回值问题

   cin>>ch、和带参数的cin,get()返回的是cin对象,只在需要bool类型数据的地方返回bool类型的数据;而不带参数的cin.get()返回值是整型的字符编码,也就是说可以用ch=cin.get()来对输入的字符进行非bool类型的数据比较;

例:1)、while((cin>>ch)!=‘@’)不合法,cin>>的返回值类型与‘@’不同,不能比较

      2)、while(cin.get(ch)!='@')不合法,理由同上

      3)、while(cin.get()!='@') 合法,将输入字符的ASCII码@字

2、不带参数的cin.get()的输入输出问题

   若有ch=cin.get();cout<<ch;当ch的类型不同时,对于数值与字符型的输入其输出情况见下表

当有char ch;

输入 输出
字符 该字符
数字 该数字(但在系统中是将其看做char类型的存储的是其编码一般为ASCII编码)

当有int ch;

输入 输出
字符 数字(该字符对应的ASCII码)
数字 数字(但不是原数字,而是输入数字最高位的十进制ASCII码)

即输出的类型看定义的变量类型而定,但系统都将其看为字符(cin.get()函数用于字符的输入)。

猜你喜欢

转载自blog.csdn.net/Schlangemm/article/details/83419498