プロが教えるわが家の防犯対策術!

c言語


int temp = 0;
if(isdigit(arr[i])){
temp=arr[i]-'1'+26

3行目の意味を教えてください

arrに入っている文字列はchar型の数字または英字です。

おそらく数字を英字に変換しようとしている?のですがそれがどのようになっているかがわかりません

A 回答 (2件)

これだけだと、


何がしたいのかよく分かりませんね…。

普通は、変数+'1'とか、変数+'A'とかで
例えば、2+'A'で'C'にしたりするのですが…。


arr[i] = 'C' だった場合、
temp = 67 - 49 + 26 = 44 になります。

arr[i] = '3' だった場合、
temp = 51 - 49 + 26 = 28 になります。


arr[i]-'1'+26 だと、文字 '1' と 26 でこの部分の値は変わりません
もしかしたら、コードの意味を理解しやすくしたい可能性はありますが、
それにしても'1' + 26 は 75または'K'を指します…。

これらの数字が何を表すのか、
もう少し情報がないと何をしようとしているのかサッパリです。
    • good
    • 0
この回答へのお礼

はい、別に意味を表すとかどうでもいいんで、どういう働きをしてるか知りたいだけなので十分です。

お礼日時:2022/03/27 10:21

うん、全く分からんね。


誰も分かんねぇんじゃねぇかなぁ・・・・・・何をやろうとしてるんだかサッパリ分からない。
少なくとも、ASCIIコード前提だったら「意味のある計算」にならんのじゃないかしら(この演算だと制御文字の範疇に入ってしまう)。

全然別の文字コードの可能性も考えたけど、見つからんかったわ。
よって、何をやろうとしてるか、は全く不明、です。

あと、同じ質問をレスが付かないから、って新しく上げない。
重複投稿、って事で規約違反になります。

c言語 文字 - '1'+26:
https://oshiete.goo.ne.jp/qa/12869215.html
    • good
    • 1
この回答へのお礼

質問編集したいから上げただけなんですけど

お礼日時:2022/03/27 10:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!