User Tools

Site Tools


user:psechris:portfolio:datastrucuresproject1

Project: Data Types

A project for CSCS 2330 by Paul Sechrist during the Spring 2013.

Objectives

Play with data type size example, experiment with it a little.

Code

1
#include <stdio.h>
#include <stdlib.h>
 
int main() {
 
/*                      Data Types
                                         Size
        %hhd    Signed char               1
        %hhu    unsigned char             1
        %hd     signed short int          2
        %hu     unsigned short int        2
        %d      signed int                4
        %u      unsigned int              4
        %ld     signed long int           8
        %lu     unsigned long int         8
        %llu    signed long long int      8
        %llu    unsigned long long int    8
        %f      float                     0
        %lf     double                    0
        %llf    long double               0
 
 */
 
        signed char sc=0;
        unsigned char uc=0;
        signed short int ssi=0;
        unsigned short int usi=0;
        signed int si=0;
        unsigned int ui=0;
        signed long int sli=0;
        unsigned long int uli=0;
        signed long long int slli=0;
        unsigned long long int ulli=0;
        float f=0;
        double d=0;
        long double ld=0;
 
        fprintf(stdout, "a signed char is %hhu bytes \n", sizeof(sc));
        fprintf(stdout, "lower bound is: %hhd\n", ((unsigned char)(sc-1)/2)+1);
        fprintf(stdout, "upper bound is: %hhd \n", ((unsigned char)(sc-1)/2));
        fprintf(stdout, "----------------------------\n");
        fprintf(stdout, "an unsigned char is %hhu bytes\n", sizeof(uc));
        fprintf(stdout, "lower bound is: %hhu\n", uc);
        fprintf(stdout, "upper bound is: %hhu\n", uc-1);
        fprintf(stdout, "----------------------------\n");
        fprintf(stdout, "a signed short int is %hd bytes \n", sizeof(ssi));
        fprintf(stdout, "lower bound is: %hd\n", ((unsigned short int)(ssi-1)/2)+1);
        fprintf(stdout, "upper bound is: %hd \n", ((unsigned short int)(ssi-1)/2));
        fprintf(stdout, "----------------------------\n");
        fprintf(stdout, "an unsigned short int is %hu bytes\n", sizeof(usi));
        fprintf(stdout, "lower bound is: %hu\n", usi);
        fprintf(stdout, "upper bound is: %hu\n", usi-1);
        fprintf(stdout, "----------------------------\n");
        fprintf(stdout, "a signed int is %d bytes \n", sizeof(si));
        fprintf(stdout, "lower bound is: %d\n", ((unsigned int)(si-1)/2)+1);
        fprintf(stdout, "upper bound is: %d \n", ((unsigned int)(si-1)/2));
        fprintf(stdout, "----------------------------\n");
        fprintf(stdout, "an unsigned int is %u bytes\n", sizeof(ui));
        fprintf(stdout, "lower bound is: %u\n", ui);
        fprintf(stdout, "upper bound is: %u\n", ui-1);
        fprintf(stdout, "----------------------------\n");
        fprintf(stdout, "a signed long int is %ld bytes \n", sizeof(sli));
        fprintf(stdout, "lower bound is: %ld\n", ((unsigned long int)(sli-1)/2)+1);
        fprintf(stdout, "upper bound is: %ld \n", ((unsigned long int)(sli-1)/2));
        fprintf(stdout, "----------------------------\n");
        fprintf(stdout, "an unsigned long int is %lu bytes\n", sizeof(uli));
        fprintf(stdout, "lower bound is: %lu\n", uli);
        fprintf(stdout, "upper bound is: %lu\n", uli-1);
        fprintf(stdout, "----------------------------\n");
        fprintf(stdout, "a signed long long int is %lld bytes \n", sizeof(slli));
        fprintf(stdout, "lower bound is: %lld\n", ((unsigned long long int)(slli-1)/2)+1);
        fprintf(stdout, "upper bound is: %lld \n", ((unsigned long long int)(slli-1)/2));
        fprintf(stdout, "----------------------------\n");
        fprintf(stdout, "an unsigned long long int is %llu bytes\n", sizeof(ulli));
        fprintf(stdout, "lower bound is: %llu\n", ulli);
        fprintf(stdout, "upper bound is: %llu\n", ulli-1);
        fprintf(stdout, "----------------------------\n");
        fprintf(stdout, "a float is %f bytes \n", sizeof(f));
        fprintf(stdout, "lower bound is: %f\n", ((float)(f-1)/2)+1);
        fprintf(stdout, "upper bound is: %f \n", ((float)(f-1)/2));
        fprintf(stdout, "----------------------------\n");
        fprintf(stdout, "an double is %lf bytes\n", sizeof(d));
        fprintf(stdout, "lower bound is: %lf\n", d);
        fprintf(stdout, "upper bound is: %lf\n", d-1);
        fprintf(stdout, "----------------------------\n");
        fprintf(stdout, "a long double is %llf bytes \n", sizeof(ld));
        fprintf(stdout, "lower bound is: %llf\n", ((long double)(ld-1)/2)+1);
        fprintf(stdout, "upper bound is: %llf\n", ((long double)(ld-1)/2));
        fprintf(stdout, "----------------------------\n");
 
        return(0);
}

Execution

lab46:~/src/datastructures/review$ ./fun
a signed char is 1 bytes
lower bound is: -128
upper bound is: 127
----------------------------
an unsigned char is 1 bytes
lower bound is: 0
upper bound is: 255
----------------------------
a signed short int is 2 bytes
lower bound is: -32768
upper bound is: 32767
----------------------------
an unsigned short int is 2 bytes
lower bound is: 0
upper bound is: 65535
----------------------------
a signed int is 4 bytes
lower bound is: -2147483648
upper bound is: 2147483647
----------------------------
an unsigned int is 4 bytes
lower bound is: 0
upper bound is: 4294967295
----------------------------
a signed long int is 8 bytes
lower bound is: -9223372036854775808
upper bound is: 9223372036854775807
----------------------------
an unsigned long int is 8 bytes
lower bound is: 0
upper bound is: 18446744073709551615
----------------------------
a signed long long int is 8 bytes
lower bound is: -9223372036854775808
upper bound is: 9223372036854775807
----------------------------
an unsigned long long int is 8 bytes
lower bound is: 0
upper bound is: 18446744073709551615
----------------------------
a float is 0.000000 bytes
lower bound is: 0.500000
upper bound is: -0.500000
----------------------------
an double is 0.000000 bytes
lower bound is: 0.000000
upper bound is: -1.000000
----------------------------
a long double is 0.000000 bytes
lower bound is: 0.500000
upper bound is: -0.500000
----------------------------
lab46:~/src/datastructures/review$

Reflection

Good way to review data types and C in general.

References

Matt's examples.

user/psechris/portfolio/datastrucuresproject1.txt · Last modified: 2013/09/03 23:48 by psechris