> c=(char)cは左辺がintなので折角キャストしても暗黙のキャストでintに戻ってしまう。
「型」としての説明では正しいですが、「変数の値」としての話なら間違いです。
一度、下記のプログラムを実行してみてください。
#include <stdio.h>
void putval_int_cast_char( int c ){
printf("[cast befor: %5d, ", c); // キャスト処理前の c の値
c = (char)c;
printf("cast after: %5d]\n", c); // キャスト処理後の c の値
}
int main( void ){
printf("Char:\n");
putval_int_cast_char('a');
putval_int_cast_char('A');
putval_int_cast_char('\0');
printf("Int:\n");
putval_int_cast_char(-32);
putval_int_cast_char(132);
putval_int_cast_char(256);
putval_int_cast_char(-256);
putval_int_cast_char(1600);
putval_int_cast_char(-1600);
return -1;
}
この処理を、こちらで mingw32 でデフォルト設定でコンパイル・実行した出力結果が下記になります。
Char:
[cast befor: 97, cast after: 97]
[cast befor: 65, cast after: 65]
[cast befor: 0, cast after: 0]
Int:
[cast befor: -32, cast after: -32]
[cast befor: 132, cast after: -124]
[cast befor: 256, cast after: 0]
[cast befor: -256, cast after: 0]
[cast befor: 1600, cast after: 64]
[cast befor: -1600, cast after: -64]
このようにキャスト前と後では値が変化しています。
これを踏まえてもう一度聞いてみてはどうでしょうか?
(もしかしたら先輩さんの説明が足りなかったのかもしれません)