CodeNebula
C++98corebeginner

Basic Types

C++98 · The Foundation · Compiler flag: -std=c++98

Explanation

Fundamental data types like integers, floating-point numbers, characters, and booleans store basic values.

Real-World Scenario

Used in a banking app to store account balances (int), interest rates (float), or transaction status (bool).

Quick Snippet

snippet.cpp
int x = 10; float y = 3.14;

Full Example

basic_types.cpp
// CodeNebula - C++98 Example: Basic Types
// Compile: g++ -std=c++98 -Wall -Wextra -o example basic_types.cpp

// Demonstrates all fundamental types in C++98: int, float, double, char, bool,
// short, long, unsigned variants. Shows sizeof and typical value ranges using
// <climits> and <cfloat> constants.

#include <iostream>
#include <climits>
#include <cfloat>

int main()
{
    // ------------------------------------------------------------------
    // 1. bool  (guaranteed to hold true / false)
    // ------------------------------------------------------------------
    bool flag = true;
    std::cout << "=== bool ===" << std::endl;
    std::cout << "  Value       : " << flag << std::endl;
    std::cout << "  sizeof(bool): " << sizeof(bool) << " byte(s)" << std::endl;
    std::cout << std::endl;

    // ------------------------------------------------------------------
    // 2. char  (holds a single character or small integer)
    // ------------------------------------------------------------------
    char letter = 'A';
    signed char sc = -42;
    unsigned char uc = 200;

    std::cout << "=== char ===" << std::endl;
    std::cout << "  char   value : " << letter
              << "  (as int: " << static_cast<int>(letter) << ")" << std::endl;
    std::cout << "  sizeof(char) : " << sizeof(char) << " byte(s)" << std::endl;
    std::cout << "  CHAR_MIN     : " << CHAR_MIN << std::endl;
    std::cout << "  CHAR_MAX     : " << CHAR_MAX << std::endl;
    std::cout << "  signed char  : " << static_cast<int>(sc) << std::endl;
    std::cout << "  unsigned char: " << static_cast<int>(uc) << std::endl;
    std::cout << "  UCHAR_MAX    : " << UCHAR_MAX << std::endl;
    std::cout << std::endl;

    // ------------------------------------------------------------------
    // 3. short (at least 16 bits)
    // ------------------------------------------------------------------
    short s = -12345;
    unsigned short us = 50000U;

    std::cout << "=== short ===" << std::endl;
    std::cout << "  short value         : " << s << std::endl;
    std::cout << "  unsigned short value: " << us << std::endl;
    std::cout << "  sizeof(short)       : " << sizeof(short) << " byte(s)" << std::endl;
    std::cout << "  SHRT_MIN            : " << SHRT_MIN << std::endl;
    std::cout << "  SHRT_MAX            : " << SHRT_MAX << std::endl;
    std::cout << "  USHRT_MAX           : " << USHRT_MAX << std::endl;
    std::cout << std::endl;

    // ------------------------------------------------------------------
    // 4. int (at least 16 bits, typically 32 bits on modern platforms)
    // ------------------------------------------------------------------
    int i = -100000;
    unsigned int ui = 3000000000U;

    std::cout << "=== int ===" << std::endl;
    std::cout << "  int value         : " << i << std::endl;
    std::cout << "  unsigned int value: " << ui << std::endl;
    std::cout << "  sizeof(int)       : " << sizeof(int) << " byte(s)" << std::endl;
    std::cout << "  INT_MIN           : " << INT_MIN << std::endl;
    std::cout << "  INT_MAX           : " << INT_MAX << std::endl;
    std::cout << "  UINT_MAX          : " << UINT_MAX << std::endl;
    std::cout << std::endl;

    // ------------------------------------------------------------------
    // 5. long (at least 32 bits)
    // ------------------------------------------------------------------
    long l = -2000000000L;
    unsigned long ul = 4000000000UL;

    std::cout << "=== long ===" << std::endl;
    std::cout << "  long value         : " << l << std::endl;
    std::cout << "  unsigned long value: " << ul << std::endl;
    std::cout << "  sizeof(long)       : " << sizeof(long) << " byte(s)" << std::endl;
    std::cout << "  LONG_MIN           : " << LONG_MIN << std::endl;
    std::cout << "  LONG_MAX           : " << LONG_MAX << std::endl;
    std::cout << "  ULONG_MAX          : " << ULONG_MAX << std::endl;
    std::cout << std::endl;

    // ------------------------------------------------------------------
    // 6. float (single-precision IEEE 754)
    // ------------------------------------------------------------------
    float f = 3.14f;

    std::cout << "=== float ===" << std::endl;
    std::cout << "  float value     : " << f << std::endl;
    std::cout << "  sizeof(float)   : " << sizeof(float) << " byte(s)" << std::endl;
    std::cout << "  FLT_MIN (pos)   : " << FLT_MIN << std::endl;
    std::cout << "  FLT_MAX         : " << FLT_MAX << std::endl;
    std::cout << "  FLT_DIG (digits): " << FLT_DIG << std::endl;
    std::cout << std::endl;

    // ------------------------------------------------------------------
    // 7. double (double-precision IEEE 754)
    // ------------------------------------------------------------------
    double d = 2.718281828459045;

    std::cout << "=== double ===" << std::endl;
    std::cout << "  double value     : " << d << std::endl;
    std::cout << "  sizeof(double)   : " << sizeof(double) << " byte(s)" << std::endl;
    std::cout << "  DBL_MIN (pos)    : " << DBL_MIN << std::endl;
    std::cout << "  DBL_MAX          : " << DBL_MAX << std::endl;
    std::cout << "  DBL_DIG (digits) : " << DBL_DIG << std::endl;
    std::cout << std::endl;

    // ------------------------------------------------------------------
    // 8. long double (extended precision, platform-dependent)
    // ------------------------------------------------------------------
    long double ld = 1.41421356237309504880L;

    std::cout << "=== long double ===" << std::endl;
    std::cout << "  long double value     : " << static_cast<double>(ld) << std::endl;
    std::cout << "  sizeof(long double)   : " << sizeof(long double) << " byte(s)" << std::endl;
    std::cout << "  LDBL_DIG (digits)     : " << LDBL_DIG << std::endl;
    std::cout << std::endl;

    // ------------------------------------------------------------------
    // Summary table
    // ------------------------------------------------------------------
    std::cout << "=== Size summary (bytes) ===" << std::endl;
    std::cout << "  bool       : " << sizeof(bool) << std::endl;
    std::cout << "  char       : " << sizeof(char) << std::endl;
    std::cout << "  short      : " << sizeof(short) << std::endl;
    std::cout << "  int        : " << sizeof(int) << std::endl;
    std::cout << "  long       : " << sizeof(long) << std::endl;
    std::cout << "  float      : " << sizeof(float) << std::endl;
    std::cout << "  double     : " << sizeof(double) << std::endl;
    std::cout << "  long double: " << sizeof(long double) << std::endl;

    return 0;
}

/*
Expected output (typical 64-bit platform, sizes may vary):

=== bool ===
  Value       : 1
  sizeof(bool): 1 byte(s)

=== char ===
  char   value : A  (as int: 65)
  sizeof(char) : 1 byte(s)
  CHAR_MIN     : -128
  CHAR_MAX     : 127
  signed char  : -42
  unsigned char: 200
  UCHAR_MAX    : 255

=== short ===
  short value         : -12345
  unsigned short value: 50000
  sizeof(short)       : 2 byte(s)
  SHRT_MIN            : -32768
  SHRT_MAX            : 32767
  USHRT_MAX           : 65535

=== int ===
  int value         : -100000
  unsigned int value: 3000000000
  sizeof(int)       : 4 byte(s)
  INT_MIN           : -2147483648
  INT_MAX           : 2147483647
  UINT_MAX          : 4294967295

=== long ===
  long value         : -2000000000
  unsigned long value: 4000000000
  sizeof(long)       : 4 byte(s)  (or 8 on some platforms)
  LONG_MIN           : -2147483648
  LONG_MAX           : 2147483647
  ULONG_MAX          : 4294967295

=== float ===
  float value     : 3.14
  sizeof(float)   : 4 byte(s)
  FLT_MIN (pos)   : 1.17549e-38
  FLT_MAX         : 3.40282e+38
  FLT_DIG (digits): 6

=== double ===
  double value     : 2.71828
  sizeof(double)   : 8 byte(s)
  DBL_MIN (pos)    : 2.22507e-308
  DBL_MAX          : 1.79769e+308
  DBL_DIG (digits) : 15

=== long double ===
  long double value     : 1.41421
  sizeof(long double)   : 12 byte(s) (or 8/16 depending on platform)
  LDBL_DIG (digits)     : 18

=== Size summary (bytes) ===
  bool       : 1
  char       : 1
  short      : 2
  int        : 4
  long       : 4
  float      : 4
  double     : 8
  long double: 12
*/
Run command
g++ -std=c++98 -Wall -Wextra -o example basic_types.cpp