引き算がしたいのですが。。。 – プログラミング – Home

引き算がしたいのですが。。。
 
通知
すべてクリア

[解決済] 引き算がしたいのですが。。。


困った
 困った
(@困った)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

どうも、初めまして。
困ったです。

引き算がしたいのですが、
うまくいきません。

char a;

~処理~

a = a -'1';

キャラクターから、整数で引き算することは出来ない事はわかりました。
でも、とてもしたいのです。

なので、aを引き算をする時だけ一時的に整数に置き換える。
なんて出来ないでしょうか?
もっと良いやり方とかありましたら、教えてください。

かなり、初歩的な質問で申し訳ありません。
宜しくお願いします。


引用未解決
トピックタグ
コキン
 コキン
(@コキン)
ゲスト
結合: 23年前
投稿: 3
 

char型は1バイトの大きさを持っています。intは4バイトです。(処理系?によって異なったりするみたいですが)
違いは(多分)それだけです。
要するにchar型は文字専用の変数ではないということです。アスキーコード表を見てみると判ると思いますが、
すべの文字は整数で表現されてます。ですから、

char ch = '1';

printf(%d\n,ch);

ということも当然出来ます。ただ、1-'1'=0にはなりません。理由は、アスキーコード表を見てください。

>aを引き算をする時だけ一時的に整数に置き換える。
つまりこの解釈の仕方が間違ってます。

と、こんなんで大丈夫でしょうか?


返信引用
CdS
 CdS
(@CdS)
ゲスト
結合: 24年前
投稿: 176
 

結局何がしたいんでしょう?
a = a - 1;
ということ?もっと簡単に書けば
a--;
ですけど。


返信引用
けん★
 けん★
(@けん★)
ゲスト
結合: 23年前
投稿: 28
 

char a;

~処理~

int i;

i = atoi(a) - 1;

itoa(i,a,10);

こんな感じでいかがでしょうか?


返信引用
TAKA
 TAKA
(@TAKA)
ゲスト
結合: 23年前
投稿: 117
 

aが何を表したいのでしょうか?
aが一桁の数値なのでしょうか?
それともaが文字の数値なのでしょうか?
それとも単純に文字なのでしょうか?
それがわからないと、正確に答えられません。


返信引用
困った
 困った
(@困った)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

困ったです。

情報が足りなくてすみません。
一応解決はしたのですが、
もっと、いいやり方があったら教えてください。

**ソース開始**
CString a; //2が設定されています。

// aから-1を行いたい
char CharA;
CharstrSPage = atoi(a); // 演算の為CStringをCharに変換
CharA= CharA- 1;
szCPage.Format(%d, CharA);
**ソース終了**

atoi関数でCStringからCharに変換
引き算を行う
Format関数を使用しCStringに戻す。

こんな感じです。


返信引用
NGA
 NGA
(@NGA)
ゲスト
結合: 23年前
投稿: 98
 

CString szCPage = 2;
szCPage.Format(%d, atoi(szCPage) - 1);


返信引用
TAKA
 TAKA
(@TAKA)
ゲスト
結合: 23年前
投稿: 117
 

ページみたいなので、一桁ではない可能性があるので
参考程度に例です。

CString a;
int dt;

dt = atoi(a);
if (dt >= 0) {
a.Format(%d,dt-1);
}
else {
// エラー等
}


返信引用
困った
 困った
(@困った)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

ふむふむ、
format関数と、演算は一つの処理文でできるのですね。

TAKAさん、よくわかりましたね。
まさに、ページです。

皆さんありがとうございます。


返信引用
NGA
 NGA
(@NGA)
ゲスト
結合: 23年前
投稿: 98
 

>まさに、ページです。
ということなら、TAKAさんのソースのifの条件式は

>if (dt >= 0) {
if (dt >= 2) {

でしょうか。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました