C for Java Programmers - PowerPoint PPT Presentation

About This Presentation
Title:

C for Java Programmers

Description:

short int x; // declare x as a small integer. long y; // declare y as long integer ... Assigning a negaitve value to an unsigned variable is confusing ... – PowerPoint PPT presentation

Number of Views:52
Avg rating:3.0/5.0
Slides: 28
Provided by: seungs
Category:

less

Transcript and Presenter's Notes

Title: C for Java Programmers


1
C for Java Programmers
  • Chapter 2. Fundamental Daty Types
  • Timothy Budd

2
Integers
  • Java Integer Internal Representation
  • long - 32 bit
  • integer -32 bit
  • long - 64 bit
  • short int x // declare x as a small integer
  • long y // declare y as long integer
  • C Integer Internal Representation
  • long and/or short may have the same size as
    integer

3
C Integer
  • An unsigned integer can only hold nonnegative
    values
  • int i -3
  • unsigned int j i
  • cout ltlt j ltlt endl // will print very large
    positive integer
  • Assigning a negaitve value to an unsigned
    variable is confusing
  • Integer division involving negative numbers is
    platform dependent, but following equality must
    be preserved a (a / b) b a b

4
Integers
  • Never use the remainder operator with negative
    values.
  • unsigned long a // can hold largest integer
    value
  • signed short int b
  • C does not recognize the Byte data type in
    Java. Instead signed char is often used to
    represent byte-sized quantities.

5
Characters
  • 8 bit quatity -
  • Legal to perform arithmatic on characters
  • Character can be signed or unsigned.
  • w_char - recent addition wide character alias for
    another interger type such as short.

6
Booleans
  • Recent addtion - bool
  • Historical boolean representation
  • nonzero - true
  • zero - false
  • Integer and pointer types can be used as boolean
    values.
  • Cannot be signed or unsigned.

7
Examples of Booleans
8
Booleans
  • Even pointer value can be used as booleans. False
    if it is null, true otherwise.
  • aClass aPtr // declare a pointer variable
  • ...
  • if (aPtr) // will be true if aPtr is not null
  • Legacy code can contain different boolean
    abstractions.

9
Bit Fields
  • Seldome used feature
  • Programmer can specify explicitly the number of
    bits to be used.
  • struct infoByte
  • int on1 // one-bit value, 0 or 1
  • int 4 // four bit padding, not named
  • int type 3 // three bit value, 0 to 7

10
Floating Point Values
  • float, double, long double
  • int i
  • double d 3.14
  • i d // may generate a warning
  • Never use float use double instead.
  • math rountines will not throw an exception on
    error

11
Floating Point Values
  • Always check errno
  • double d sqrt(-1) // should generate error
  • if (errno EDOM)
  • ... // but only caught if checked
  • Java Nan, NEGATIVE INFINITY, POSITIVE INFINITY

12
Enumerated Values
  • Nothing in commonwith Enumeration calss in Java
  • enum declaration in C
  • enum color red, orange, yellow
  • enum fruit apple, pear, orange
  • // error orange redefined

13
Enumeration Values
  • Can be converted into integers and can even have
    their own internal integer values explicitly
    specified.
  • enum shape circle12, square3, triangle
  • Can be assigned to an integer and incremented,
    but the resulting value must then be cast back
    into the enumrated data type before
  • fruit aFruit pear
  • int i aFruit // legal conversion
  • i // legal increment
  • aFruit fruit(i) // fruit is probably now
    orange
  • i
  • aFruit fruit(i) // fruit value is now
    undefined

14
Enumeration Values
  • Cast operation can be written by type(value) or
    older (type)value syntax.
  • Not legal to change a pointer type.
  • int i
  • char c
  • c char (i) // error not legal syntax
  • static_cast would be even better.

15
The void type
  • In Java, used to represent a method or function
    that does not yield a result.
  • In C, type can also be uses as a pointer type
    to describe a universal pointer that can hold a
    pointer to any type of value.

16
Arrays
  • An array need not be allocated by using new
    directive as in Java.
  • The number of element determined at compile time.
  • int data100 // create an array of 100
    elements
  • The number of element can be omitted.
  • char text "an array of characters"
  • int limits 10, 12, 14, 17, 0

17
Arrays
  • Not legal to place the square brackets after type
    as in Java
  • double limits 10, 12, 14, 17, 0 //
    legal Java, not C
  • The limit can be omitted when arrays are passed
    as arguments to a function.
  • // compute average of an array of data values
  • double average (int n, double data )
  • double sum 0
  • for (int i 0 i lt n i)
  • sum datai
  • return sum / n

18
Structure
  • The major differences in C between a strunct
    and a class is that the access is by default
    public rather than private as in classes.
  • // holds an int, a double, AND a pointer
  • struct myStruct
  • int i
  • double d
  • anObject p

19
Unions
  • Similar to a structure, but the different data
    fields all sharre the same location in memory.
  • // can hold an int, a double, OR a pointer
  • union myUnion
  • int i
  • double d
  • anObject p
  • Object-oriented languages made unions unnecessary
    by introducing polymorphic variables

20
Object Values
  • Java uses reference semantics for assignment
  • class box // Java box
  • public int value
  • box a new box()
  • box b
  • a.value 7 // set variable a
  • b a // assign b from a
  • a.value 12 // change variable a
  • System.out.println("a value " a.value)
  • System.out.println("b value " b.value)

21
Object Values
  • C uses copy semantics.
  • class box // C box
  • public
  • int value
  • box a // note, explicit allocation not required
  • box b
  • a.value 7
  • b a
  • a.value 12
  • cout ltlt "a value " ltlt a.value ltlt endl
  • cout ltlt "b value " ltlt b.value ltlt endl

22
Object Values
  • The concept of reference variable in C, which
    is a variable declared as a direct alias.
  • box a new box() // java reference assignment
  • box b a
  • b new box() // reassignment of reference
  • box a // C example
  • box b a // reference assignment
  • box c
  • b c // error not permitted to reassign
    reference

23
Functions
  • C permits the definition of function that are
    not member of any class.
  • // define a function for the maximum
  • // of two integer values
  • int max (int i, int j)
  • if (i lt j) return j
  • return i
  • int x ...
  • int y ...
  • int z max(x, y)

24
Functions
  • Prototypes are necessary in C as every function
    name with its associated parameter types must be
    known to the compiler.
  • // declare function max defined elsewhere
  • int max(int, int)

25
Order of Argument Evaluation
  • In Java, argument is evaluated from left to
    right.
  • String s "going, "
  • printTest (s, s, s "gone ")
  • void printTest (String a, String b, String c)
  • System.out.println(a b c)
  • In C, order of argument evaluation is undefined
    and implement dependent.

26
The function main
  • In C, main is a function outside any class.
  • Always return zero on successful completion of
    the main program.
  • int main (int argc, char argv )
  • cout ltlt "executing program " ltlt argv0 ltlt
    '\n'
  • return 0 // execution successful
  • The first command line argument in C is always
    the application name.

27
Altenative main Entry points
  • Individual libraries may provide threir own
    version of main and then require a different
    entry point.
  • Many Windows graphical systems come with their
    own main routine already written, which will
    perform certain initializations before invoking a
    different function such as WinMain.
Write a Comment
User Comments (0)
About PowerShow.com