ここから本文です

C言語で変数a.b.c.dに1を足してe.f.g.hにする簡単な書きかたはありませんか 一つず...

que********さん

2011/10/909:51:05

C言語で変数a.b.c.dに1を足してe.f.g.hにする簡単な書きかたはありませんか
一つずつ書いていると行が多くなってしまうので

補足e=a+1;
f=b+1;
g=c+1;
h=d+1;
です

閲覧数:
283
回答数:
3

違反報告

ベストアンサーに選ばれた回答

和泉 博さん

2011/10/1009:13:31

>C言語で変数a.b.c.dに1を足してe.f.g.hにする簡単な書きかたはありませんか

行が多くなるでお困りなら回答者の皆さんと同じで「横書きする」かな。

#defineプリプロセッサを活用し、package_set(n, pack, =1) の引数=1は 2にセットしたければ =2 に、あるいは1を加算したければ、+=1 に記述するようにすれば良い。
また、package_sabun(n, pack, +1) については、取り合えず質問に合わせて1を加算するようにしましたが、2を加算したければ +2 にしたり、あるいは5倍した値を代入したければ *5 と記述すれば良い。
まあ、#defineの内容に照らし合わせて、いろいろ試してみてください。





#include <stdio.h>
#define package_set(n,p,x) z=n; while(z) *p[--z]x
#define package_sabun(n,p,x) t=n; z=n/2; while(z) *p[--t]=*p[--z]x

int main(void){
int a,b,c,d,e,f,g,h;
int *pack[]={&a,&b,&c,&d,&e,&f,&g,&h}; //※ひとまとめにする
int z, t, n = sizeof(pack)/sizeof(int*);
package_set(n, pack, =1); // = などを含めた式を引数に与える
printf("a=%d, b=%d, c=%d, d=%d, e=%d, f=%d, g=%d, h=%d\n", a,b,c,d,e,f,g,h);
package_sabun(n, pack, +1); // +,-,*,/などの演算子を含めた引数を与える
printf("a=%d, b=%d, c=%d, d=%d, e=%d, f=%d, g=%d, h=%d\n", a,b,c,d,e,f,g,h);
return 0;
}

/* --- 実行結果 ---
a=1, b=1, c=1, d=1, e=1, f=1, g=1, h=1
a=1, b=1, c=1, d=1, e=2, f=2, g=2, h=2

*/

質問した人からのコメント

2011/10/16 14:09:13

有難うございました

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

邪威庵さん

編集あり2011/10/911:26:13

>questionnaire_8111

「行が多くなる」が理由なら、

e=a+1; f=b+1; g=c+1; h=d+1;

って横並びでいいじゃん。セミコロン(;)の後ろ多めに開けるようにすれば見やすいし。


※ ちなみに、なぜ = や + や; が所々全角になってるんだ?

k03********さん

編集あり2011/10/911:06:58

questionnaire_8111さん

どんなものに、なりました?

それだけでは、コンパイラーを通過しない。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる