文字列を数値に変換(atoi)することはよくあるけど、char型を変換することってよく考えたら今までなかったなぁと思い、実際使う機会が出てきた時にわからずに焦りました。
結局、char型と言えども内部では数値なのだというのが分かっていれば、キャストすればいいじゃんって気づきますよね。。。勉強不足
ということで
unsigned char c = '1' ;
int n = 0 ;
if ( c < '0' || c > '9' ) {
; // error
} else {
n = (int)(c - '0') ;
}
但し、キャストするときに'0'を引いてやる必要がありますね。
これはASCIIコードで「'0'~'9'」は「48~57」に割り当てられているので、例えばcharの「'9'」ならASCIIコードで「57」だから、57-48=9となるわけですね。これをint型にキャストしてやれば数値の9になると・・・
わかってしまえば簡単なことですが、使う機会がないと気づきませんね^^;
これって基本ですよねぇ~。あぁまだまだやなぁ。

0 コメント:
コメントを投稿