Docstoc

c

Document Sample
c Powered By Docstoc
					       Differences between Java and C

                  CS-2303, System Programming Concepts
        (Slides include materials from The C Programming Language, 2nd edition, by Kernighan and Ritchie and
                          from C: How to Program, 5th and 6th editions, by Deitel and Deitel)




CS-2303, C-Term 2010                      Differences between Java                        1
                                                   and C
                       Java and C

• Java is derived from C
• Many of its syntactic characteristics are
  similar to C

• However, there are some huge differences




CS-2303, C-Term 2010   Differences between Java   2
                                and C
                       Expressions

• Arithmetic operators are the same:–
          +, –, *, /, %, ++, ––


• Numerical type conversion is mostly the
  same
      – Java spells out divide by zero, NaN (not a
        number, etc.)
      – C & C++ are machine dependent

• Check the textbooks for details
CS-2303, C-Term 2010    Differences between Java   3
                                 and C
                       Relational Operators

• Relational operators work the same way but return
  different results:–
          >, >=, <, <=, ==, !=


• In Java, they return values FALSE and TRUE
• In C/C++, they return values 0 and 1
• In C/C++,
      – a value of zero means false
      – any value that is not zero means true
      – E.g., 1, 5, -1000000, 3.14159, 6.626068 × 10-34
CS-2303, C-Term 2010        Differences between Java   4
                                     and C
       Conditional and Bitwise Operators

• Conditional execution operators are same in Java
  and C/C++:–
          ||, &&, ? followed by :


• Bitwise operators are same in Java and C/C++:–
          |, &, ^ for bit-by-bit operations with a word

• Shift operators differ a little bit
          << (left shift) is the same
          >> (right shift) is machine dependent in C/C++
            • I.e., whether to fill from left with zeros or sign bits
CS-2303, C-Term 2010            Differences between Java         5
                                         and C
         Assignment and Unary Operators

• Assignment operators work the same:–
          =, +=, -=, *=, /=, &=, |=, ^=


• The following unary operators are available
  C/C++ but not in Java
            ~     invert the bits of a word
            *     pointer dereference
            &     pointer creation
            (type)          cast (i.e., forceable type conversion)
            sizeof          # of bytes in operand or data type
            ->    pointer dereference with field selection
CS-2303, C-Term 2010          Differences between Java      6
                                       and C
  Summary about Expressions and Operators

• Pretty much the same in C/C++ and Java

• Be sure to check details in textbook

• Be sure to check operator precedence
            • Table 2-1 in K&R
            • Distributed throughout text in D&D



CS-2303, C-Term 2010      Differences between Java   7
                                   and C
                            Statements

• Statements in C/C++:–
            •   Labeled statement
            •   Expression statement
            •   Compound statement
            •   Selection statement
            •   Iteration statement
            •   Jump statement




CS-2303, C-Term 2010        Differences between Java   8
                                     and C
                            Statements

• Statements in C/C++:–
            •   Labeled statement                      E.g., cases of a switch
            •   Expression statement                    statement
                                                       Similar to Java
            •   Compound statement
            •   Selection statement
            •   Iteration statement
            •   Jump statement




CS-2303, C-Term 2010        Differences between Java            9
                                     and C
                            Statements

• Statements in C/C++:–
            •   Labeled statement
            •   Expression statement                   Any expression
                                                        followed by ';'
            •   Compound statement
                                                       Much like to Java
            •   Selection statement
            •   Iteration statement
            •   Jump statement




CS-2303, C-Term 2010        Differences between Java          10
                                     and C
                            Statements

• Statements in C/C++:–
            •   Labeled statement
            •   Expression statement
            •   Compound statement                     Sequence of statements
                                                        enclosed in "{}"
            •   Selection statement
                                                       Called a “block” in Java
            •   Iteration statement
            •   Jump statement




CS-2303, C-Term 2010        Differences between Java          11
                                     and C
                            Statements

• Statements in C/C++:–
            •   Labeled statement
            •   Expression statement
            •   Compound statement                     switch (expr)
            •   Selection statement                    if (expr)statement
                                                       if (expr) statement
            •   Iteration statement
                                                        else statement
            •   Jump statement
                                                       Same as in Java




CS-2303, C-Term 2010        Differences between Java        12
                                     and C
                         Statements

• Statements in C/C++:–
            •   Labeled statement
            •   Expression statement
            •   Compound statement
            •   Selection statement  while (expr) statement
            •   Iteration statement  do statement while (expr
            •   Jump statement       for (exp1; exp2, exp3)
                                      statement
                                     Very similar to Java


CS-2303, C-Term 2010      Differences between Java   13
                                   and C
                           Statements

• Statements in C/C++:–
            •   Labeled statement
            •   Expression statement
            •   Compound statement
            •   Selection statement
            •   Iteration statement      goto
                                    break;
            •   Jump statement      continue;
                                         Not present in Java
                                    return expr in this
                                         Not allowed
                                           course
                                    Very similar to Java

CS-2303, C-Term 2010        Differences between Java   14
                                     and C
                Summary about Statements

• Pretty much the same in C/C++ and Java

• Be sure to check details in textbooks




CS-2303, C-Term 2010   Differences between Java   15
                                and C
                  Formatted Input & Output

• Very different between C and Java
• Very different between C and C++

• Handled by library functions in C
            • printf()
            • scanf()
            • getc()
            • putc()
            • Many others!

CS-2303, C-Term 2010         Differences between Java   16
                                      and C
         printf() – Print formatted data

printf("string containing '%' specifiers",
  expr1, expr2, expr3, …);
• Copy the string, character-by-character, to
  the output.
• When the ith '%' is encountered, treat it as a
  conversion specifier for converting the value
  of expri
            • Copy the converted value to the output per
              instructions encoded in the conversion specifier
• Return number of characters printed
CS-2303, C-Term 2010       Differences between Java   17
                                    and C
          printf() conversion specifiers

• See K&R, p 154 & 244 or D&D Chapter 9
• %d or %i
            • Treat expression as a decimal number (with sign)
• %u
            • Treat expression as unsigned decimal number
• %f
            • Treat expression as double precision floating point number; print
              without exponent
• %e or %E
            • Treat expression as double precision floating point number; print with
              exponent (base 10) — scientific notation
• %c
            • Treat value of expression as the code for a single character
• %s
            • Treat expression as a pointer to a string
• …                                                         Later in this
CS-2303, C-Term 2010             Differences between Java                   18
                                          and C             course
    printf() conversion specifiers (continued)

• Conversion specifiers may optionally
  contain
            • Right or left alignment in the field
            • Minimum field width (padded on right or left)
            • Precision – i.e.,
                   – Maximum length of string
                   – Number of decimal places of floating point value
• Examples
            %6d – print signed decimal number in 6-char field
            %8.4f – print floating point number with four places
             after decimal point, field width of 8 characters
CS-2303, C-Term 2010            Differences between Java     19
                                         and C
           scanf() – Scan formatted data

scanf("string containing '%' specifiers",
  &var1, &var2, &var3, …);
• Scan the input, matching the string character by
  character.
• When the ith '%' is encountered, treat as a
  conversion specifier for converting next sequence
  of characters and storing result in vari
            • Copy the converted value to the output per instructions encoded
              in the conversion specifier
• Stop if input does not match string or conversion
  not successful
• Return number of successful conversions.
CS-2303, C-Term 2010          Differences between Java     20
                                       and C
                  scanf() – Typical Usage

int j;
double x;
scanf("%d%f", &j, &x);
• Scan the input, skipping blanks and tabs
• Try to match a signed integer; if successful, store
  result in j
• Continue scanning, skipping blanks and tabs
• Try to match a floating point number. If successful,
  store in x
• Return number of items stored.
CS-2303, C-Term 2010     Differences between Java   21
                                  and C
                       scanf() Details

• K&R Table B-2 (p. 246), D&D Chapter 9



            printf() and scanf() are both needed for
             Lab #1
             Programming Assignment #1




CS-2303, C-Term 2010      Differences between Java   22
                                   and C
                            Summary

• Differences and similarities between Java
  and C
            • Expressions
            • Statements
• There are lots of other differences
            • Will be covered during the course




CS-2303, C-Term 2010        Differences between Java   23
                                     and C
                       Questions?




CS-2303, C-Term 2010   Differences between Java   24
                                and C

				
DOCUMENT INFO
Shared By:
Tags:
Stats:
views:13
posted:1/25/2011
language:English
pages:24