summaryrefslogtreecommitdiff
path: root/2/3_int_arith/show-bytes.c
diff options
context:
space:
mode:
Diffstat (limited to '2/3_int_arith/show-bytes.c')
-rw-r--r--2/3_int_arith/show-bytes.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/2/3_int_arith/show-bytes.c b/2/3_int_arith/show-bytes.c
new file mode 100644
index 0000000..0860b8d
--- /dev/null
+++ b/2/3_int_arith/show-bytes.c
@@ -0,0 +1,33 @@
+#include <stdio.h>
+
+typedef unsigned char *byte_pointer;
+
+void show_bytes(byte_pointer start, size_t len) {
+ int i;
+ for (i = 0; i < len; i++)
+ printf(" %.2x", start[i]);
+ printf("\n");
+}
+
+void show_int(int x) {
+ show_bytes((byte_pointer) &x, sizeof(int));
+}
+
+
+void show_float(float x) {
+ show_bytes((byte_pointer) &x, sizeof(float));
+}
+
+
+void show_pointer(void *x) {
+ show_bytes((byte_pointer) &x, sizeof(void *));
+}
+
+void test_show_bytes(int val) {
+ int ival = val;
+ float fval = (float) ival;
+ int *pval = &ival;
+ show_int(ival);
+ show_float(fval);
+ show_pointer(pval);
+}