C :: Aufgabe #163 :: Lösung #2

3 Lösungen Lösungen öffentlich
#163

Kleine Variablenspielerei

Anfänger - C von kjaenke - 03.07.2017 um 15:05 Uhr
Schreibe ein Programm das zwei Zahlen entgegen nimmt und jeweils in eine Variable speichert.
Tausche die Werte der Variablen ohne weitere Variablen zu definieren.
Es sind im ganzen Programm nur die zwei vorher definierten Variablen erlaubt!

Viel Spaß :)
#2
vote_ok
von devnull (8870 Punkte) - 06.07.2017 um 13:04 Uhr
Lösung mit Bitshifting:

Konsolenausgabe:

$ ./varswap2 2147483647 1234567890
Input : a=2147483647, b=1234567890
swapped: a=1234567890, b=2147483647

Quellcode ausblenden C-Code
/***************************************
 * varswap2.c  Variableninhalte tauschen
 ***************************************/
#include <stdlib.h>
#include <stdint.h>
#include <stdio.h>

int main(int argc, char **argv) {
	int32_t a;
	int64_t b; 

	if (sizeof(a) == sizeof(b)) {
		printf("int32 and int64 have same size on this machine.\n");
		return 1;
	}
	
	if (argc != 3) {
	  printf("Usage: varswap <Zahl 1> <Zahl 2>\n");
	  return 0;
	}	
	a = atoi(argv[1]);
	b = atoi(argv[2]);		

	printf("Input  : a=%d, b=%ld\n", a, b);
	b = b<<32|a;
	a = b>>32;
	b = b&UINT32_MAX;
	printf("swapped: a=%d, b=%ld\n", a, b);
	return 0;
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
1810049

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.