各ASCII文字には整数値があります。文字を印刷するとき、下敷きシステムはchar
の値をチェックし、対応するASCII文字を印刷します。値自体は印刷されません。参考までにASCII tableを参照してください。
char var = '7'; // var's value is actually 55.
char other = 55; // This is same as '7'
あなたのケースでは、2つの桁文字の合計を計算する「5」と「7」、あなたは文字を減算する必要が「0」それらから変換するために「5」と「7」の数字に5および7。
char first = '5' - '0'; // Is actually 53 - 48 = 5
char second = '7' - '0'; // Is actually 55 - 48 = 7
char result = first + second; // 5 + 7 = 12
// When you print result, you will not see "12" printed. Instead you see a form feed special character.
char test = '5' + '7'; // 53 + 55 = 108, which is letter 'l'
あなたは、実際の値を印刷した文字列にchar
の値を変換する必要があります。 itoa()
に変換できます。
char result = ('5' - '0') + ('7' - '0');
char buf[5];
memset(buf, 0, sizeof(buf));
itoa((int)result, buf, 10);
printf("%s\n", buf);
これは我々だけでコンパイルして実行するため、 – hugomg
にコピーして貼り付けることができ、完全なプログラムにコードを拡大した場合に大いに恩恵を受けられる質問の一種であります?私はvalをフォームフィード文字0x12にする。 –
@MartinJamesは '0x12'ではなく10進数' 12'です。 –