getcharもgetcheも文字を扱う関数ですが、書籍によると戻り値はint型と書かれています。「char型じゃないんか!」と少し驚きつつ、調べてみました。
C言語学習はVisual Studio Community 2019で行っているので、MicroSoft社のページを調べてみました。
以下のリンク先を見ると、getcharの戻り値は確かにint型と書かれています。
次はgetcheの戻り値を調べてみましょう。
https://docs.microsoft.com/ja-jp/cpp/c-runtime-library/reference/getche?view=vs-2019
このリンク先に
Microsoft 固有の関数名 getche は、 _getche関数の非推奨のエイリアスです。
と書かれています。
そこで、_getcheのページを読んでみると、戻り値は int型と書かれています。
getcheが_getcheのエイリアスなら、getcheの戻り値もint型になるはずです。
実験がてら、以下のコードを書いてみました。
#include <stdio.h> #include <conio.h> int main(void) { printf("getcheの戻り値は %d バイト", sizeof(getche())); return 0; }
コードの実行結果
getcheの戻り値は 4 バイト
これはint型のサイズと一致します(備考:私の環境では、int型は4バイトです)。
以上のことから、getcheの戻り値はint型の可能性が高いです。