user-0 提问: getchar（）的返回值具体是怎么把char类型转换成int类型的？

回复:
user: user-1
content: 注意类型隐式提升～

user: user-2
content: 引用 10 楼 weixin_45906870的回复:引用 9 楼 5250 的回复：[quote=引用 8 楼 weixin_45906870 的回复:] [quote=引用 6 楼 5250 的回复：][quote=引用 5 楼 weixin_45906870 的回复:] [quote=引用 3 楼 5250 的回复：]getchar的返回值是char类型的啊  你在疑惑什么不是的，应该是int类型   它是char字符对应的ASCII码，是个int值，但是一般用时候都用char数据取接受它，可以看一下getchar函数定义 __CRT_INLINE __cdecl __MINGW_NOTHROW  int getchar (void) {   return (--stdin->_cnt >= 0)     ?  (int) (unsigned char) *stdin->_ptr++     : _filbuf (stdin); } 这边是强制转化了char字符为int型  [/quote]为什么getchar返回值类型要用int而不是char？[/quote]   按理应用返回值应用char,但为了包含EOF，EOF是一个整型数,通常值为-1，char就装不下，就用了更大的int来装。[/quote]我是不是可以理解成整型数EOF在内存里面是1111 1111 1111 1111 1111 1111 1111 1111，一共四个字节，char只有我一个字节，所以装不下？[/quote] 你看一下这篇文章 https://www.cnblogs.com/Jack47/archive/2012/12/23/2819111.html

user: user-2
content: 你可以看一下这篇文章 https://www.cnblogs.com/Jack47/archive/2012/12/23/2819111.html

user: user-0
content: 引用 9 楼 5250 的回复：引用 8 楼 weixin_45906870 的回复:[quote=引用 6 楼 5250 的回复：][quote=引用 5 楼 weixin_45906870 的回复:] [quote=引用 3 楼 5250 的回复：]getchar的返回值是char类型的啊  你在疑惑什么不是的，应该是int类型   它是char字符对应的ASCII码，是个int值，但是一般用时候都用char数据取接受它，可以看一下getchar函数定义 __CRT_INLINE __cdecl __MINGW_NOTHROW  int getchar (void) {   return (--stdin->_cnt >= 0)     ?  (int) (unsigned char) *stdin->_ptr++     : _filbuf (stdin); } 这边是强制转化了char字符为int型  [/quote]为什么getchar返回值类型要用int而不是char？[/quote]   按理应用返回值应用char,但为了包含EOF，EOF是一个整型数,通常值为-1，char就装不下，就用了更大的int来装。[/quote]我是不是可以理解成整型数EOF在内存里面是1111 1111 1111 1111 1111 1111 1111 1111，一共四个字节，char只有我一个字节，所以装不下？

user: user-2
content: 引用 8 楼 weixin_45906870 的回复:引用 6 楼 5250 的回复：[quote=引用 5 楼 weixin_45906870 的回复:] [quote=引用 3 楼 5250 的回复：]getchar的返回值是char类型的啊  你在疑惑什么不是的，应该是int类型   它是char字符对应的ASCII码，是个int值，但是一般用时候都用char数据取接受它，可以看一下getchar函数定义 __CRT_INLINE __cdecl __MINGW_NOTHROW  int getchar (void) {   return (--stdin->_cnt >= 0)     ?  (int) (unsigned char) *stdin->_ptr++     : _filbuf (stdin); } 这边是强制转化了char字符为int型  [/quote]为什么getchar返回值类型要用int而不是char？[/quote]   按理应用返回值应用char,但为了包含EOF，EOF是一个整型数,通常值为-1，char就装不下，就用了更大的int来装。

user: user-0
content: 引用 6 楼 5250 的回复：引用 5 楼 weixin_45906870 的回复:[quote=引用 3 楼 5250 的回复：]getchar的返回值是char类型的啊  你在疑惑什么不是的，应该是int类型   它是char字符对应的ASCII码，是个int值，但是一般用时候都用char数据取接受它，可以看一下getchar函数定义 __CRT_INLINE __cdecl __MINGW_NOTHROW  int getchar (void) {   return (--stdin->_cnt >= 0)     ?  (int) (unsigned char) *stdin->_ptr++     : _filbuf (stdin); } 这边是强制转化了char字符为int型  [/quote]为什么getchar返回值类型要用int而不是char？

user: user-3
content: getchar获得的是字符的ascii码，是int类型 scanf根据你的输入格式来决定，“%c”是字符类型，“%d”是整形，“%s”是字符串等等，具体你可以参考scanf函数的文档

user: user-2
content: getchar的返回值是char类型的啊  你在疑惑什么

user: user-1
content: 输入1234,已经溢出了。因为char变量只能接收一个字符，1234是4个字符。

user: user-2
content: 引用 5 楼 weixin_45906870 的回复:引用 3 楼 5250 的回复：getchar的返回值是char类型的啊  你在疑惑什么不是的，应该是int类型   它是char字符对应的ASCII码，是个int值，但是一般用时候都用char数据取接受它，可以看一下getchar函数定义 __CRT_INLINE __cdecl __MINGW_NOTHROW  int getchar (void) {   return (--stdin->_cnt >= 0)     ?  (int) (unsigned char) *stdin->_ptr++     : _filbuf (stdin); } 这边是强制转化了char字符为int型

user: user-0
content: 引用 3 楼 5250 的回复：getchar的返回值是char类型的啊  你在疑惑什么不是的，应该是int类型

user: user-0
content: 引用 1 楼 前行者001 的回复：你输入的是1234按字符格式接收的 字符时char类型， char类型变量中存储的是字符对应的ASCII码，不是字符本身， 字符'1'对应的ASCII码是49，同样字符'2'->50，字符'3'->51，字符'4'->52，你在输出的时候使用10进制，输出的是字符对应的ASCII码。那getchar呢？

user: user-4
content: 你输入的是1234按字符格式接收的 字符时char类型， char类型变量中存储的是字符对应的ASCII码，不是字符本身， 字符'1'对应的ASCII码是49，同样字符'2'->50，字符'3'->51，字符'4'->52，你在输出的时候使用10进制，输出的是字符对应的ASCII码。