CSE 131
Quiz 3 Review


Semantic Type Checking
  Type Equivalence
    Structural Equivalence
    Name Equivalence
      Strict
      Loose
        Aliases/typedefs
  
  Type Compatibility
    Explicit type conversions and casts
      Non-converting casts / casts requiring run time conversion (and checks)
      Type subversions
    Implicit type coercion
      Different type rules in C and Java, for example
      Generic types
      Operator overloading and Copy/Type constructors

  Compatible
  Assignable
  Equivalent
  Addressable

  Value parameter rules vs. VAR parameter rules

  l-values, modifiable l-values, r-values

  Type inference
    Based on the overall expression (context) vs. immediate operands/operator

  Static vs. dynamic type checking
    Polymorphism

  Declaration vs. definition
  Initialization vs. assignment

  Basic types
    SPARC architecture data size (sizeof()) and alignment restrictions

  Enumeration types

  Composite types
    Records/structs
      offsetof( struct_type, struct_member )
      sizeof( type|var )
      assignment support; comparison?
    Bit fields
    Variant records/unions

  Arrays
    Memory layout in C vs. Java (arrays are real objects)
    Multidimensional arrays vs. Row-Pointer layout (array of pointers)
      Traversal pointer
    Storage map equation / address calculation
    a[i] ==> *(a + i)   - scalar pointer arithmetic

  Pointers/References
    Scalar arithmetic on pointers
    References as pointers or handles
    Explicit memory management vs. automatic garbage collection

  Interoperabilities and differences between pointers and arrays in C/C++
    Pointer Papers outside my office

  Right-Left Rule

  C/C++ Runtime Environment [Text/Data/BSS/Heap/Stack]
  Java Runtime Environment [Method_or_Class Area/Heap/Stack]