プロが教えるわが家の防犯対策術!

type型の二つの値を交換する関数形式マクロの定義について、
どなたか教えて頂けませんか?

  change(type, a, b)

たとえば、int型の変数a, bの値が10, 20である場合、
change(int, 10, 20)を呼び出した後は、a, bには20と10が
格納される、というものです。

A 回答 (3件)

よくあるマクロ


#define change(type, a, b) { a ^= b; b ^= a; a^= b;}

参照渡しで同じ意味の関数作っちゃうと a == b のときダメ、とか
type見てないじゃん、とか
浮動小数点で使えないじゃん、とか

参考URL:http://ja.wikipedia.org/wiki/XOR%E4%BA%A4%E6%8F% …
    • good
    • 0

よくあるマクロは


#define change(type a, b) do { type _ = a; a = b; b = _; } while (0)
かな. 変数名がかぶったら知らん.
あと, change(int, 10, 20) とかいう呼出をしてみたりこれを式文で使ったりするとこけるけどそれも知らん.
    • good
    • 0

よくわかりませんが、こういうことでしょうか。



#include <stdio.h>

#define change(type, a, b) { type t; t = a, a = b, b = t; }

int main(void)
{
int a = 10, b = 20;

change(int, a, b);
printf("%d %d\n", a, b);
return 0;
}
    • good
    • 0

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


人気Q&Aランキング