/******************************************************************
int_wrap.c - k4thryn columbine
demonstration of limitations on integer data types.
this program has options for signed or unsigned arguments, so that
the differences in behavior can be seen.
good options (on compilers w/ a 2-bit short) are
-s 32767
-u 65535
*******************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void usage(char *);
int main(int argc, char *argv[]){
unsigned short unsigned_number;
short signed_number;
if(argc != 3){
usage(argv[0]);
return 1;
}
if(strncmp(argv[1], "-u", 2) == 0){
printf("size in bytes: %d\narg: %s\n",sizeof(unsigned_number),argv[2]);
sscanf(argv[2],"%hu",&unsigned_number);
printf("\nunsigned value: %hu\n", unsigned_number);
printf("value + 1: %hu\n",++unsigned_number);
}
else if(strncmp(argv[1], "-s", 2) == 0){
printf("size in bytes: %d\narg: %s\n",sizeof(signed_number),argv[2]);
sscanf(argv[2],"%hd",&signed_number);
printf("\nsigned value: %hd\n", signed_number);
printf("value + 1: %hd\n", ++signed_number);
}
else{
usage(argv[0]);
return 1;
}
return 0;
}
void usage(char* bin){
fprintf(stderr,"usage:\t%s -[su] N\n",bin);
fprintf(stderr,"\twhere -s indicates signed, -u indicates unsigned, and N is an integer\n
return;
|
Bookmark int_wrap.c

