割り算しての余を求める関数はあるか? – プログラミング – Home

割り算しての余を求める関数はあるか?
 
通知
すべてクリア

[解決済] 割り算しての余を求める関数はあるか?


たかし
 たかし
(@たかし)
ゲスト
結合: 24年前
投稿: 20
Topic starter  

VC++6のユーザーです。
一般の数式だと、A÷B=C余りDの時、
D = A Mod B;
と言う書き方でいいはずなのだけど、
“Modの前に;が要ります。”
とか言うコンパイル・エラーが出て、
Modそのものを認識していないようです。
(確かに、VCのMSDNなどを見ると、
 ”Modは使えます。”とは
 書いてはあるのだけど、今イチ、
 使い方の記述が不明確。)


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 21年前
投稿: 600
 

D = A % B;

# たいていの参考書に書かれているハズですが


返信引用
アイススケーター
 アイススケーター
(@アイススケーター)
ゲスト
結合: 22年前
投稿: 280
 

% です


返信引用
monkey
 monkey
(@monkey)
ゲスト
結合: 21年前
投稿: 70
 

Modが使えるのは Visual Basic じゃなかったかな。
C/C++においては、上のお二方がおっしゃるとおりです。


返信引用
SunPac
 SunPac
(@SunPac)
ゲスト
結合: 21年前
投稿: 105
 

>(確かに、VCのMSDNなどを見ると、
> ”Modは使えます。”とは
> 書いてはあるのだけど、今イチ、
> 使い方の記述が不明確。)

本当ですか!?
と思いMSDN調べた所、.NetFrameWork内にありましたね。
これはMSの用意した.Netライブラリの機能であって、C++標準の機能ではありません。
普通は上のお二人がいってますように%演算子を使います。
MSDNで%演算子で見れますよ。


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

こんなのありました、MSDN(2003年4月)一部引用
------------------------------------------------------------------------------
div 関数は、
numer を denom で割り、商および剰余を求めます。
div_t 構造体は、商 int quot および剰余 int rem で構成されています。
商の符号は、算術上の商の符号と同じです。
商の絶対値は、算術上の商の絶対値より小さい最大の整数です。
分母が 0 の場合、プログラムは終了し、エラー メッセージが表示されます。
---------------------------
必要条件
ルーチン 必須ヘッダー   互換性
div    <stdlib.h>    ANSI、Win 98、Win Me、Win NT、Win 2000、Win XP

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してくださ
い。

ライブラリ
C ランタイム ライブラリのすべてのバージョン。
------------------------------------------------------------------------------
modをキーワードにVC++に該当する機能のものは見つかりませんでしたけど

VC6のMSDNならなおさら、探せませんでしたけど


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

C90 においては % や / での除算は除数被除数の片方または両方が負であるとき
その結果は処理系定義とされています。
-1/2 は 0 ... -1 となるかまたは -1 ... 1 となるか、どちらかになります。
# VC++6 は(というか ix86 は) 前者。
C99 では整数商を 0 方向に切り捨てることになりました(先の例では前者)
http://seclan.dll.jp/c99d/

C90 で、ソースコードの完全互換を保ちつつ、負数の剰余を求めたいのであれば
% で割ってはダメで div() または ldiv() を使う必要があります。
# とか言いつつ後者の結果を出す処理系は見たこと無いなぁ。


返信引用
たかし
 たかし
(@たかし)
ゲスト
結合: 24年前
投稿: 20
Topic starter  

皆さん、いろいろ参照になる意見ありがとうございました。
Modは、Basicだけで使えるのですね。
いちいち割ってみて、Int型に入れて、再度かけてみて、
元の値と同じになるか、と言う馬鹿なことをやっていましたが、
もうやめます。
VC++6で使っているので、%がいいようです。
浅学だったので、覚えておきます。

ありがとうございました。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

もし、C言語とかC++言語の知識が怪しいようなら、
言語の入門書を一冊かって少なくとも一度は通読した方が良いです。
まあ、一度読めば終わりと言う物ではありませんが、
後で確かこの内容はこの本にあったような程度でも頭に残っていれば、
また本を読み直せばいいだけの話なのでそれだけでもずいぶん違います。

プログラミングに近道無しと言うのが私の考えです。
基礎知識が足りない状態で突っ走ってもハマル部分が多すぎて
かえって苦戦しますし、勘違いして覚えてしまうと後で軌道修正が
大変なので少々退屈でも基礎知識の習得を優先した方が効率が良いです。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

因みにVC++の本を買って読んでもC言語やC++言語の入門書の代わりには
なりません。
VC++の本とは別に言語の入門書がいると考えてください。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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