[ create a new paste ] login | about

Link: http://codepad.org/hjooaQFW    [ raw code | output | fork ]

C++, pasted on Mar 6:
#include <stdint.h>
#include <stdio.h>

const char *writell( int64_t v );
#define MEASURE(x) fprintf( stdout, "sizeof(" #x ")\t%d\n", sizeof( x ) )
#define SHOWME(x) fprintf( stdout, #x ":\ttype: %s\n", typeid( x ).name( ) )
#define SHOWME2(x) fprintf( stdout, #x ":\t\ttype: %s, value: %s\n", typeid( x ).name( ), writell( (int64_t) (x) ) )

int main( void ) {
    MEASURE(short);
    MEASURE(int);
    MEASURE(long);
    MEASURE(int64_t);
    MEASURE(0);
    MEASURE(0l);
    SHOWME( signed short );
    SHOWME( unsigned short );
    SHOWME( signed int );
    SHOWME( unsigned int );
    SHOWME( signed long );
    SHOWME( unsigned long );
    SHOWME( int64_t );
    SHOWME( uint64_t );
    SHOWME2( 0 );
    SHOWME2( 0u );
    SHOWME2( 0l );
    SHOWME2( 0ul );
    SHOWME2( +0 );
    SHOWME2( -0 );
    SHOWME2( +0u );
    SHOWME2( -0u );
    SHOWME2( 5u );
    SHOWME2( +5u );
    SHOWME2( -5u );
    SHOWME2( 2u+3l );
    SHOWME2( 2u-3l );
    SHOWME2( -2u+3l );
    return 0;
}

// This is just a function for writing long longs, because C++ doesn't support them properly
const char *writell( int64_t v ) {
    static char buffer[22];
    if( v == 0 ) {
        buffer[0] = ' ';
        buffer[1] = '0';
        buffer[2] = '\0';
    } else {
        buffer[0] = v < 0 ? '-' : '+';
        if( v < 0 ) { v = -v; }
        int pos = 1;
        for( int64_t a = v; a > 0; a /= 10 ) { ++ pos; }
        buffer[pos] = '\0';
        for( ; v > 0; v /= 10 ) { buffer[--pos] = '0' + (v % 10); }
    }
    return buffer;
}


Output:
sizeof(short)	2
sizeof(int)	4
sizeof(long)	4
sizeof(int64_t)	8
sizeof(0)	4
sizeof(0l)	4
signed short:	type: s
unsigned short:	type: t
signed int:	type: i
unsigned int:	type: j
signed long:	type: l
unsigned long:	type: m
int64_t:	type: x
uint64_t:	type: y
0:		type: i, value:  0
0u:		type: j, value:  0
0l:		type: l, value:  0
0ul:		type: m, value:  0
+0:		type: i, value:  0
-0:		type: i, value:  0
+0u:		type: j, value:  0
-0u:		type: j, value:  0
5u:		type: j, value: +5
+5u:		type: j, value: +5
-5u:		type: j, value: +4294967291
2u+3l:		type: m, value: +5
2u-3l:		type: m, value: +4294967295
-2u+3l:		type: m, value: +1


Create a new paste based on this one


Comments: