codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#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; }
Private
[
?
]
Run code
Submit