aboutsummaryrefslogtreecommitdiff
path: root/gfsm/gfsm/src/libgfsm/tests/intfloat.c
diff options
context:
space:
mode:
Diffstat (limited to 'gfsm/gfsm/src/libgfsm/tests/intfloat.c')
-rw-r--r--gfsm/gfsm/src/libgfsm/tests/intfloat.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/gfsm/gfsm/src/libgfsm/tests/intfloat.c b/gfsm/gfsm/src/libgfsm/tests/intfloat.c
new file mode 100644
index 0000000..098b860
--- /dev/null
+++ b/gfsm/gfsm/src/libgfsm/tests/intfloat.c
@@ -0,0 +1,31 @@
+#include <stdio.h>
+
+#define ptr2int(p) ((int)(p))
+#define int2ptr(i) ((void*)(i))
+#define ptr2float(p) (*((float*)(&(p))))
+#define int2float(i) (*((float*)(&(i))))
+
+#define float2int(f) (*((int*)(&(f))))
+#define float2ptr(f) (*((void**)(&(f))))
+
+int main(void) {
+ float f = 42.24;
+ int fi;
+ void *fp;
+ float fif, fpf;
+
+ printf("f=%f\n", f);
+ fi = float2int(f);
+ printf("->fi=%d\n", fi);
+
+ fif = int2float(fi);
+ printf("-->fif=%f\n", fif);
+
+ fp = float2ptr(f);
+ printf("->fp=%p\n", fp);
+
+ fpf=ptr2float(fp);
+ printf("-->fpf=%f\n", fpf);
+
+ return 0;
+}