Makro zamieniające wartości

0

Mam napisac makro SORT(a,b,c) które wczyta trzy wartości a następnie posortuje tak aby później prawdziwe było a>=b>=c. Dodatkowo powinienem użyć makra SWAP(a,b) zamieniajacego ze soba wartosci a i b.

Już samo SWAP(a,b) nie chce działać, napisałem coś takiego:

#include<stdio.h>
#define SWAP(a,b) {int t; t=a a=b b=t; }

int main()
{

SWAP(10,6);

}

Pytanie co jest źle??

1
 #include <stdio.h>

#define SWAP(a,b) int t = a; a = b; b = t;

int main() {
    int a = 5;
    int b = 10;

    SWAP(a,b);
    printf("a = %d b = %d ", a, b);


}
1

twoje makro ma działać jedynie dla zmiennych typu int, a ty podałeś dwa literały - stałe.

na dodatek makro jest źle napisane, w jednym bloku można go użyć tylko raz.

2
#define SWAP(a, b) (((a) ^= (b)), ((b) ^= (a)), ((a) ^= (b)))

Można i tak.

1 użytkowników online, w tym zalogowanych: 0, gości: 1