#include <stdio.h>
unsigned int chg(char *);
main()
{
char m[6]
unsigned int value;
printf("変換する10進数文字列の入力\n");
gets(m);
value =chg(m);
printf("%d", value);
}
unsigned int chg(char *p)
{
unsigned int w;
w = 0;
while(*p){
w = w * 10 + *p - '0';
p++;
}
return w;
}
aを入力すると49が出力されるのですが
unsigned int w;
w = 0;
while(*p){
w = w * 10 + *p - '0';
p++;
}
の部分の処理なのですが
どのように49に変換している
のかが今ひとつ分かりません。
どなたかご教授よろしくお願いいたしますm(_ _)m
No.1ベストアンサー
- 回答日時:
一つずつ順を追って考えれば難しくないと思いますよ。
まず、getsで入力された配列には
m[0]: '4' (0x34)
m[1]: '9' (0x39)
m[2]: '\0' (0x00)
が格納されており、chg にm[]のアドレスが渡ります。
whileでは
*p から、つまり上位の桁から順に処理してます。
最初のループで
w = w * 10 + '4' - '0'
wは最初に 0が入っています。'4' は 0x34、'0'は 0x30だから、結果 wは 4になりますね。
p++で下の桁に移動し、*pは '9'になります。
w = w * 10 + '9' - '0'
で、wの 4が10倍され、9が足されます。
これでめでたく 49という数値に変換されました。
最後に、p++で *Pは 0を指すのでループから抜け出します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
反転した数値を表示させるやり方
-
Cで「大文字、小文字の判定」は...
-
文字列中に含まれる文字の個数...
-
C言語で16進数文字列から16進数...
-
charと%c , %s の関係について
-
sscanfとscanfの違いがよくわか...
-
#define _CRT_SECURE_NO_WARNIN...
-
【C++】関数ポインタの使い方
-
プログラミングで二番目に大き...
-
プログラムでの数字につく”f”の...
-
3のつく数と3の倍数を表示 C言語
-
std::set<int> で、ある値が何...
-
Enterキーを押されたら次の処理...
-
「Aに対するBの割合」と「Aに対...
-
課題;素因数分解
-
2進数の1の数を数える問題
-
C言語 配列と関数の練習問題
-
信頼区間の1.96や1.65ってどこ...
-
大きな負の値?負の大きな値???
-
Linuxで入力待ちなしkeyread関...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CStringのFindで文字列検索を行...
-
sscanfとscanfの違いがよくわか...
-
fgets関数を使用したときの文字...
-
反転した数値を表示させるやり方
-
Cで「大文字、小文字の判定」は...
-
charと%c , %s の関係について
-
C言語のステップ数をカウントす...
-
strstrを利用しない文字列検索...
-
C言語 空白の行(改行のみ)が...
-
fgetsで拾われる改行文字を削除...
-
文字列中に含まれる文字の個数...
-
C言語で16進数文字列から16進数...
-
itoaわかりません
-
文の意味
-
全角文字のチェック
-
C言語 strlen 再入力を促す
-
fgetsでバッファ残留文字列を無...
-
C言語、単語ごとに改行したい
-
ブランクのチェック
-
C++
おすすめ情報