皆さん、有難う御座います。時々質問させて頂いています。

 今回は、ベクターアドレスをC言語で書く方法について質問します。
 ルネサスのH8マイコンを使っています。モニターを使うとRAM上に割り込みの仮想ベクターを作れます。
 仮想ベクターには、割り込みのジャンプ先アドレスが書かれます。
 現在アセンブラで書いているのですが、C言語で書く方法は無いでしょうか。
 二つの方法で書きたいと思っています。
 アセンブラで次の二つの方法に相当するC言語命令を知りたい。

(1)ORGとEQU命令を使った方法
(2)ムーブ(Z80ならロード)命令で関数のアドレスをメモリに書く方法

 ルネサスにはHEWと言うソフトが有りますが、HEW特有の命令によらず、一般的なコンパイラが持っている機能で実現したい。

 以上宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (19件中1~10件)

> *(void **)(0xFE130) = &test ;



コンパイラに依存しないという意味では、上記の方法は問題があります。
CPUアドレスをポインタにキャストしても、期待した結果になるかどうかは保証されないからです。
ただ、通常はこれで問題なく動作するでしょうが...

> 関数のアドレスを書き込む方法が分からないと配列に出来ません。

これは、

void vector00();
void vector01();
...

void (* const vectors[])() = {
 &vector00,
 &vector01,
 ...
};

のようにすれば、配列にできます。
    • good
    • 0
この回答へのお礼

 回答有難う御座いました。

 この方法で配列に出来ました。
 残る課題はセクション指定です。
 No.4, No.5 さんの回答にその方法が書いてあると思うのですが、自分の能力不足のためまだ良く分かりません。
 これから調べようとしています。

 また何か有りましたら、宜しくお願いします。

お礼日時:2009/05/24 19:08

>モニターは、ROM上のプログラムだって動かせます。


>仮想ベクタはRAM上に有ります。
>モニタとユーザが作ったプログラム両方をROMに置けます。
>モニタをそのまま使用するなら、Gコマンドでユーザプログラムを実行すれば良い。
>モニタを改造すれば、リセットスタートでユーザプログラムに飛ばす事も可能です。

そこまでしますか。
プロなら有り得ませんが、アマチュアならまぁやりたければどうぞ。
そもそも仮想ベクタがどうやって実現しているか分かってます?
表面上見えませんが、割り込み処理時に一度モニタに飛んでから更に仮想ベクタを参照して再ジャンプする仕組みになってるんで時間ロスが発生します。
それにRAM上にベクタがあることでメモリ破壊暴走の危険が増します。これもプロとしては許せません。

R32Cさんの書いているベクタの設定もそうですが、モニタを前提とした設計は無駄なことをしていると思います。
    • good
    • 0
この回答へのお礼

 色々有難う御座います。

 私の知りたかった事は、回答番号No5に有る様に解決しました。
 この辺で締めませんか。

 ここは人気が有って、C言語の質問があっと言う間に増えます。
 私の方はもう解決したので、他の方の質問の回答に時間を使って頂きたいと思います。

 また何か質問した時は、宜しくお願いします。

お礼日時:2009/05/31 08:06

単純に、ベクタアドレスを設定する部分だけ、アセンブリ言語のソースとして


分割すればいいだけの話のように思います。
それが、Cなのかアセンブリ言語なのか、どちらでも保守性は変わらないと
思います。どちらかというとリンカの指定を省いてアドレス指定ができる
アセンブリ言語で書いたほうが保守しやすいとは思いますが
    • good
    • 0
この回答へのお礼

 色々有難う御座います。

 私の知りたかった事は、回答番号No5に有る様に解決しました。
 この辺で締めませんか。

 ここは人気が有って、C言語の質問があっと言う間に増えます。
 私の方はもう解決したので、他の方の質問の回答に時間を使って頂きたいと思います。

 また何か質問した時は、宜しくお願いします。

お礼日時:2009/05/31 08:06

同じこととしか思えないですね。



>しかし割り込みを使うと、START_Cを個別に変更しアセンブル
>し直さなければ成りません。
>C言語だけで記述出来れば、START_Cの変更が入らなくなります。

C言語だけで記述できても、C言語で記述するベクターテーブルはコンパイル
しなおさないといけないので同じですね。

補足要求の意味がわからなかったのでしょうか?
    • good
    • 0

>H8/3052だけです。

プログラムによって割り込みを使ったり使わなかったりすると、
>アセンブラのベクターテーブルをその都度変更しなければなりません。
> C言語で処理できれば、アセンブラ部分は変更しないで共通に使えます。

???
なんかおかしくありませんか?

Cで書こうとアセンブリ言語で書こうと、ベクタテーブルの変更が必要なら
どちらの言語でも変更が必要ですよね。
確かに、
Cで書けば当然Cで変更が必要で、おっしゃるとおりアセンブリ言語の変更は不要ですが
いったいどのような仕組みをお考えなんですか?
    • good
    • 0
この回答へのお礼

 スタックポインタの設定など行うSTART_Cと言うアセンブラ・プログラムが有ります。その中で仮想ベクタの設定を行っています。
 不意な割り込みが入ってもいいように、無限ループプログラムのベクタを入れて有ります。

 割り込みを使わないC言語プログラムなら、START_Cはどれにでも使えます。

 しかし割り込みを使うと、START_Cを個別に変更しアセンブルし直さなければ成りません。

 C言語だけで記述出来れば、START_Cの変更が入らなくなります。

お礼日時:2009/05/29 23:30

> ルネサスで無料で提供しているモニタが有ります。

 割り込みが入るとモニタに入り、そこからRAMに書いた仮想ベクタのアドレスに飛ぶようになっています。

えーと。伝わっていないかな?
全部のプログラムをROM化して、それをモニタから動かす気ですか?
モニタが動かすプログラムってRAM上だし、ベクタもRAM上ですよね。ここで言うROM化とは、ROMに全て焼く&ベクタもROMにあるモニタもない状況です。
最終的にプログラムをROM化せずRAM上でモニタで動かす実験だけの予定であれば今の方針のままで良いですがそのつもりですかと伺っています。回答番号:No.2からROM化とは、そのつもりで言ってました。
    • good
    • 0
この回答へのお礼

>モニタが動かすプログラムってRAM上だし、ベクタもRAM上ですよね。

 モニターは、ROM上のプログラムだって動かせます。
 仮想ベクタはRAM上に有ります。

>ここで言うROM化とは、ROMに全て焼く&ベクタもROMにあるモニタもない状況です。

 モニタとユーザが作ったプログラム両方をROMに置けます。
 モニタをそのまま使用するなら、Gコマンドでユーザプログラムを実行すれば良い。
 モニタを改造すれば、リセットスタートでユーザプログラムに飛ばす事も可能です。

お礼日時:2009/05/29 23:40

>1.RAM上で開発してROMに書き込みます。


> printf()などは大きくてRAMに収まりません。
> ROMに書いて、呼び出す実験をした事があります。
>  コンパイル後にROMに書き、EQU命令で関数のアドレスを定義し、C言語で呼び出しました。

前にも書きましたがベクタを含めてROM化する場合は今のベクタをプログラムで書き換える方法は使えません。ROMですからね。そこの所はどう考えてますか?
    • good
    • 0
この回答へのお礼

 ルネサスで無料で提供しているモニタが有ります。
 割り込みが入るとモニタに入り、そこからRAMに書いた仮想ベクタのアドレスに飛ぶようになっています。

お礼日時:2009/05/28 21:54

richardoさん、はっきりしていないので答えてください。


1.RAMで使う前提である。ROMは考えていない。
2.H8限定。
3.H8アドバンストモード専用
4.C言語だけで全てを行いたい。アセンブラやリンカ・スクリプトでは何もしない。
って事ですよね?
    • good
    • 0
この回答へのお礼

 zwiさん、

1.RAM上で開発してROMに書き込みます。
 printf()などは大きくてRAMに収まりません。
 ROMに書いて、呼び出す実験をした事があります。
  コンパイル後にROMに書き、EQU命令で関数のアドレスを定義し、C言語で呼び出しました。

2.H8/3052用です。

3.そうです。アドバンストモードです。

4.C言語で対処出来るなら、C言語でやりたいという事です。

 今までの結果は、回答番号5の「お礼」に書いた通りです。
 

お礼日時:2009/05/27 23:16

> ヘッダ・ファイルは共通に使えるようになっていますよね。


> それと同様にC言語に伴うアセンブラ・ソフト部分も変更せず、
>C言語部分の変更だけで対処出来ないかなという事です。
???
どれだけのCPUで共通部品にしようとしているのですか?
少なくとも、ベクターテーブルを持たないCPUでは使えないことは
お分かりですよね?
    • good
    • 0
この回答へのお礼

 R32Cさん、

>どれだけのCPUで共通部品にしようとしているのですか?

 H8/3052だけです。プログラムによって割り込みを使ったり使わなかったりすると、アセンブラのベクターテーブルをその都度変更しなければなりません。
 C言語で処理できれば、アセンブラ部分は変更しないで共通に使えます。

お礼日時:2009/05/27 22:46

>でも私の質問は、「アセンブラなら実現方法が分かるけど、C言語で実現する方法を知りたい」という事です。


gccとかHEWのCコンパイラは重いから使いたくないって事ですね。しかし、そうするとセクションはC38H.EXEだと機能的に操れない可能性が高い状況ですから無理があります。C38H.EXEを自分で改造しますかって話ですね。
その貫き通したい気持ちは好きですが、そこまでやる気がありますか?
    • good
    • 0
この回答へのお礼

>C38H.EXEを自分で改造しますかって話ですね。

 そんな事はしません。私の知りたかったのは、関数のアドレスを得る方法です。アスタリスクを上手に使うと得られるみたいだけど、その方法が分からなかったのです。
 回答番号5のお礼に書いてある様に、その方法は分かりました。
 有難う御座いました。

お礼日時:2009/05/28 22:12

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qドラックしたセルに自動配色

エクセルで困ってます。

業務日報をエクセルで作って、A列に業務内容を書き、B列以降を時間にしてセルをドラックするだけで色がつくようにしたいのですが。また、色づけされた合計値(時間)も業務内容ごとに集計したいと思ってます。

VBAで勉強したのですが、なかなか良い事例がなくて困ってます。どうかよろしくお願いします。

Aベストアンサー

依然塗りつぶし県警で回答したことがありますので、
その質問&回答を参考にされてみては如何でしょうか。

その上で、もう少し具体的な質問があれば補足してください。

参考になれば幸いです。

質問:アクティブセルのある行の任意の列範囲を塗りつぶしたい,VBA
http://oshiete1.goo.ne.jp/kotaeru.php3?q=450265

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=450265

QAKI-h8 3069f C言語 HEW マイコン DIPスイッチで LED ON_OFF プログラム 「組込みI/O制御演習」

こんにちは。

標記開発環境でマイコンを制御しています。

下記ソースでDIPスイッチのONOFFでLEDを点灯させたいのですが
うまくいきません。

多分
P4DR.BIT.B0 =~P5DR.BIT.B0;
の部分の修正が必要かと思うのですが。

どなたかご存知の方よろしくお願いします。
//------------------
#include "iodefine.h"


void main(void);
#ifdef __cplusplus
extern "C" {
void abort(void);
}
#endif

void main(void)
{
P5DDR = 0;
P5PCR.BYTE = 0xff;
P4DDR = 0xff;

while(1)
{
P4DR.BIT.B0 =~P5DR.BIT.B0;
}

}

#ifdef __cplusplus
void abort(void)
{

}
#endif

こんにちは。

標記開発環境でマイコンを制御しています。

下記ソースでDIPスイッチのONOFFでLEDを点灯させたいのですが
うまくいきません。

多分
P4DR.BIT.B0 =~P5DR.BIT.B0;
の部分の修正が必要かと思うのですが。

どなたかご存知の方よろしくお願いします。
//------------------
#include "iodefine.h"


void main(void);
#ifdef __cplusplus
extern "C" {
void abort(void);
}
#endif

void main(void)
{
P5DDR = 0;
P5PCR.BYTE = 0xff;
...続きを読む

Aベストアンサー

ご想像とおり、確かにちがっているような・・・

>>P4DR.BIT.B0 =~P5DR.BIT.B0;
ですが、
私が所持しているAKI-3069fボードでは、
赤LEDを制御する場合、
P4DR.BIT.B6 = !P5DR.BIT.B0;

緑LEDを制御する場合、
P4DR.BIT.B7 = !P5DR.BIT.B0;

だと思います。

Qコンピュータのベクタ番号について

割込み処理について勉強しているのですが、どうしても納得できない箇所があり質問させてください。
ベクタ番号の16と19って浮動小数点の例外割込みと定義されているのですが、ソフトウェア割込みのint 10hとint 13hはモニタ関連とディスク関連のBIOSに割り当てられています。
「int 10hはベクタ番号16」「int 13hはベクタ番号19」ではないのでしょうか。
基本的な質問で申し訳ありませんが、よろしくお願いいたします。

Aベストアンサー

文献を見てやっと意味がわかったように思います。

自分もWindows時代になってからBIOSコールやファンクションコールがAPIに置き換わってからというもの、あまり深く掘り下げてはいないので浅学なため間違いもあるかも知れませんがご了承を。

要するに、IntelのCPUアーキテクチャに80286からプロテクトモードというのが搭載されてアプリの階層を設けてシステムを安全に運用しようという機能を付けた時点で、それ以前のアーキテクチャであるリアルモードでのメモリマップががらりと変わって、BIOSコールに代表される旧アーキテクチャの固定テーブルによる割り込みベクタというのが追いやられてエミュレーションという形でフォローされている(メモリ上に複製されるのでOS側でパッチをあてたりしてた時代もあった)ようなのですが、そういった意味でnihon-jinさんの理解はどちらのモードも同じものとしてみていられるのではないでしょうか。

DOSやリアルモードオプションの付いたWindows3(懐かしいー \^o^ /)なんかでは、メモリマップ上にBIOSやOADGにあるベクターテーブルがたしかに存在していたのですが、80386以上が主流になって(80286まではモードの切り替えには再起動が必要だった:SEGAのTeraDriveというマシンではちょっと変則的でしたが)、立ち上げ時以外はあまり意識しなくなったというか、割り込みベクタを云々するその手のプログラミングは主流からはずれていったのでこの辺に詳しい方は結構少ないのではないかと思います。

すいません、昔の慣習でリアルモードとかプロテクトモードとか言う単語を使いましたが、ご提示のマニュアルで言うところの
保護モード=プロテクトモード
実アドレスモード=リアルモード
となります。

プロテクトモードで動作しているソフトウェアにとっての割り込みテーブルと、リアルモードで動作しているソフトウェアにとっての割り込みテーブルは、同じものではないということですね。

リアルモードの割り込みはご存知のようですので、プロテクトモードの割り込みに関してこのページに解説が役に立つかと思います
図の少し前の解説でテレコになってるので戸惑いますがそこさえ気をつければ図も多くわかりやすいかと思います
http://caspar.hazymoon.jp/OpenBSD/annex/interrupt_protect.html

文献を見てやっと意味がわかったように思います。

自分もWindows時代になってからBIOSコールやファンクションコールがAPIに置き換わってからというもの、あまり深く掘り下げてはいないので浅学なため間違いもあるかも知れませんがご了承を。

要するに、IntelのCPUアーキテクチャに80286からプロテクトモードというのが搭載されてアプリの階層を設けてシステムを安全に運用しようという機能を付けた時点で、それ以前のアーキテクチャであるリアルモードでのメモリマップががらりと変わって、BIOSコールに代表され...続きを読む

QC言語C++言語アセンブラ言語の就職先

自分は以前Javaプログラマをやってました。

あまりに、便利なライブラリばかりで、「なんかプログラムを書いているというより、ソフトウェアの振る舞いを書いているだけだ。。」とおもってしまい、すきになれませんでした。正直、苦痛でした。

今、上記言語を勉強しているのですが、コンピュータの根本からプログラムをしている実感が沸き、とても面白いです。

でも、これらの言語を習得したところでどんなところに就職できるのかさっぱりわかりませんし、需要があるのかもしりません。いわゆる組み込み系統は就職できるんでしょうが、私としてはアルゴリズムでUNIXのプログラムをシコシコ書いているような作業がすきなのです。いってみれば、私はクラシックな人間だとおもいます。

そんな僕ですが、就職先はあるのでしょうか?よろしくお願いします。

Aベストアンサー

 勉強熱心ですね。
 実際に、kamkamkam3-san の言われている、
「なんかプログラムを書いているというより、ソフトウェアの振る舞いを書いているだけだ。。」というのは的を得ています。
 
 経験からなんですが、ソフトウェア会社では、ノウハウとしてライブラリをもっています。ちょうど、Java のクラス・ライブラリーなようなものです。ですから、それらを使って製品を効率良く製品をつくれるかが重要です。実際のソフトウェア・エンジニアは、それをうまく使って効率良くコーディングすることを要求されます。

 ソフトウェア業界は、1人で閉じた製品を開発することは、まずないです。製品=プロジェクトだとすると、最低3名~100人以上が同時進行となります。そうなると、割り当てられたノルマを効率良く行うかが評価のポイントになります。つまり、「ソフトウェアの振る舞いを書いているだけ」ということにもなります。

 コンピュータ言語は、あくまでもツール(道具)です。
 kamkamkam3-san が、今後どういった分野の仕事を希望している(興味がある)かが重要だと思います。
 その答えとして、「C言語C++言語アセンブラ言語」を勉強することで実感できると思います。ですので、ぜひ、勉強を続けてください。

 勉強熱心ですね。
 実際に、kamkamkam3-san の言われている、
「なんかプログラムを書いているというより、ソフトウェアの振る舞いを書いているだけだ。。」というのは的を得ています。
 
 経験からなんですが、ソフトウェア会社では、ノウハウとしてライブラリをもっています。ちょうど、Java のクラス・ライブラリーなようなものです。ですから、それらを使って製品を効率良く製品をつくれるかが重要です。実際のソフトウェア・エンジニアは、それをうまく使って効率良くコーディングすることを要求さ...続きを読む

Q仮想ベクタテーブルについて

私、このたび10年ぶりにマイコンプログラム制作をすることになったので、現在必死に勉強しておりますがどうしてもわからないことがあり質問いたしました。

現在は昔と違い、プログラムの書き換えが簡単にできるようにRAM上にフラッシュのプログラムをコピーして、RAM上でプログラムを起動するのが一般的なやり方のようですが、その際、仮想ベクタテーブルはなぜ必要なのでしょうか?

ROMの先頭アドレスからマッピングされた通常のベクタテーブルに、RAMにコピーした関数のアドレスを登録しておけばよいように思うのですが?

フラッシュの書き換え回数の問題があるからといっても、ベクタテーブルはアドレスを登録しておくだけだから、通常でしたら頻繁に書き換えなど怒らないかと思うのですが。。。?

なぜ仮想ベクタテーブルというやり方をしなくてはいけないのかよくわかりません。

どなたかわかりやすくご教授下さい。

よろしくお願いします。

Aベストアンサー

こんにちは。
お話が最初に戻るわけですね。
余計なやり取りを介してしまい、申し訳ない限りです。

で、最初のご質問「なぜ仮想ベクタを使わなければならないのか?」ですが、これは最初から申し上げている通りです。
仮想ベクタを使わなければならない、なんてルールはどこにもありません。
やりやすいようにやって頂くのが一番です。

ただ、システムは、将来どんな変更があるか分かりません。
ダウンロード更新で済むものがPC持って全国行脚とかになるリスクは、極力避けたいものです。
そのため、システムにはある程度の柔軟性を持たせる事が必要かと思います。
ブートローダを書き替えないのなら、なおさら工夫が必要なんじゃないのかなぁ、と感じるのですが、詳しくは分からないので何とも言えません。
質問者様が検討した結果、仮想ベクタなんぞ要らん!と判断すれば、そうして一向に構わないと思います。

ご検討下さいませ。

Qプログラミング言語Cとプログラミング言語C++

プログラミング言語Cとプログラミング言語C++の違いって何ですか?
あと、プログラミング言語C++についていくつか質問があります。
#include <iostream>
using namespace std;
void main(){
cout << "Hello world!" << endl;
}
このプログラムについて質問なんですが、iostreamってプログラミング言語Cで言うstdio.hのことですか?
using namespace stdって何ですか?
あと、 cout <<"Hello world!"って何ですか?

Aベストアンサー

> プログラミング言語Cとプログラミング言語C++の違いって何ですか?

C++は、Cのほぼ全ての仕様を含み、クラス、テンプレート、例外処理など大幅に機能拡張した言語です。
細部の違いが知りたければ、下記を参照してください。
http://www.kijineko.co.jp/tech/cpp2c

> このプログラムについて質問なんですが、iostreamってプログラミング言語Cで言うstdio.hのことですか?

違います。
C++にもstdio.hがありますし、cstdioというヘッダもあります。

iostreamヘッダは、cin, cout, cerr, clogとそれらのワイド文字版を宣言するためのものです。
ですので、iostreamヘッダで宣言・定義される関数やクラスを使うだけでは一般的なファイルの操作はできませんし、sprintfやsscanfに相当するものもありません。
また、removeやrenameなど、ストリームとは関係のない操作も含まれていません。

> using namespace stdって何ですか?

「using指令」によって、名前空間stdの中にある名前を大域的名前空間でも使えるようにするものです。
せっかく名前空間を分けているのに、それを無効にしてしまうような機能ですから、安易にusing指令を使うのはお勧めしません。

> あと、 cout <<"Hello world!"って何ですか?

標準出力に対して、文字列"Hello, world!"を出力します。
ちなみに、endlは、改行を出力したあと、バッファにたまった内容を実際に吐き出します(フラッシュします)。単なる改行の出力ではないので要注意です。

C++の仕様は結構大きい方なので、遭遇した記述をひとつひとつ質問していたのではキリがありません。
まずは入門書を一冊読み、わからない用語等については、処理系のリファレンスを読むか、ネットで検索するなどしてください。

> プログラミング言語Cとプログラミング言語C++の違いって何ですか?

C++は、Cのほぼ全ての仕様を含み、クラス、テンプレート、例外処理など大幅に機能拡張した言語です。
細部の違いが知りたければ、下記を参照してください。
http://www.kijineko.co.jp/tech/cpp2c

> このプログラムについて質問なんですが、iostreamってプログラミング言語Cで言うstdio.hのことですか?

違います。
C++にもstdio.hがありますし、cstdioというヘッダもあります。

iostreamヘッダは、cin, cout, cerr, clogとそれらのワイド...続きを読む

Qベクタ画像変換ソフト

JPGなどの画像をベクタ画像に変換したいんですが、ベクタ画像
変換ソフトなどはありますか?

Aベストアンサー

potrace

Qvisual studioのC言語とフリーソフトのC言語ツールの違い

前にvisual studioでC言語の勉強を行っており、再び始めようかと思っているものです。

少し疑問に思ったのですが、visual studioのC言語とC言語のフリーソフトの違いは何でしょうか?

Aベストアンサー

現実には「フリーソフト」が何かにもよるのでしょうが、
原則としては「C言語」の仕様範囲であるかぎり、
何処の製品/プロダクトだろうが何も変わりません。
(「C言語」は国際標準の規定がありますので、この範囲では大差ない)

後は、すでにあるようなWindowsアプリ(GUI)の作りやすさとか、
IDE(プログラム用の統合ソフト)、その他ツールなどが付いてるだけです。

Qラスタ画像をベクタ画像に変換する方法

わたしはParaFla!でフラッシュアニメーションを創りたいと思っているのですがその画像にベクタ画像を使わないと創りにくくなってしまいそうなシーンがあり、ベクタ画像をいたいのですがPalaFla!をダウンロードするサイトで一緒にダウンロードしたPalaDrawだと思い通りの絵がかけないので一旦原画を知り合いのスキャナで取り込んでもらってからそれをメール経由で送ってもらってからベクタ画像に変換したいと考えていますが何かいい方法はありますか?出来ればお金を賭けたくないのでソフトを利用する場合はフリーソフトを利用する方法を教えてください。
身勝手な質問で申し訳ありません。

Aベストアンサー

■po2pdr
http://www.geocities.jp/sarusekkei/potrace.html
No.1さんのportraceexeをpo2pdr.exeと同じフォルダ内に置けば拡張子pdrに変換できます。
但し、カラー変換できますが100色未満ですのでpadie等の
ソフトで減色処理をして下さい。100色以上だと変換できないので!!
■Padie
http://www.vector.co.jp/soft/win95/art/se063024.html

QC言語初心者で早速詰まってしまいました。 C言語の計算についてでちょっと良く分からないです… #in

C言語初心者で早速詰まってしまいました。


C言語の計算についてでちょっと良く分からないです…

#include<stdio.h>

int main(void)
{
int a,b,x,s,c;
printf(″A=″);
scanf(″%d″,&a );
printf(″B=″);
scanf(″%d″,&b);
printf(″X=″);
scanf(″%d″,&x) ;

//和sはa,b,xの合計を2で割った余り
s=();
//桁上げcはa,b,xの合計を2で割った商
c=();
printf(″s=%d c=%¥n″,s,c,);
return 0;


}


というもので余りと商を求める問題です
この場合余りの求め方が(a+b+x)%2商の求め方が(a+b+x)/2だと思うんですが、実行してもエラーが出て来てしまいなにがなんだかわからなくなってしまいました。なにが違うんでしょうか?
良くわかりません、何方かわかりやすく教えていただけると助かります。

C言語初心者で早速詰まってしまいました。


C言語の計算についてでちょっと良く分からないです…

#include<stdio.h>

int main(void)
{
int a,b,x,s,c;
printf(″A=″);
scanf(″%d″,&a );
printf(″B=″);
scanf(″%d″,&b);
printf(″X=″);
scanf(″%d″,&x) ;

//和sはa,b,xの合計を2で割った余り
s=();
//桁上げcはa,b,xの合計を2で割った商
c=();
printf(″s=%d c=%¥n″,s,c,);
return 0;


}


というもので余りと商を求める問題です
この場合...続きを読む

Aベストアンサー

>エラーが出て来てしまい

どんなエラーか書かないと誰も分かりません。


人気Q&Aランキング