User Tools

Site Tools


user:psechris:portfolio:datastrucuresproject1

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
user:psechris:portfolio:datastrucuresproject1 [2013/09/04 03:46] psechrisuser:psechris:portfolio:datastrucuresproject1 [2013/09/04 03:48] (current) psechris
Line 1: Line 1:
 +======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=====
 +<code c 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);
 +}
 +
 +</code>
 +====Execution====
 +<cli>
 +
 +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$
 +</cli>
 +=====Reflection=====
 +Good way to review data types and C in general.
 +=====References=====
 +Matt's examples.