Differences between Java and C CS-2303, C-Term Differences between Java and C CS-2303, System Programming Concepts (Slides include materials from The C Programming Language, 2 nd edition, by Kernighan and Ritchie and from C: How to Program, 5 th and 6 th editions, by Deitel and Deitel)
Differences between Java and C CS-2303, C-Term Java and C Java is derived from C Many of its syntactic characteristics are similar to C However, there are some huge differences
Differences between Java and C CS-2303, C-Term 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
Differences between Java and C CS-2303, C-Term 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, , , × Very important!
Differences between Java and C CS-2303, C-Term 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
Differences between Java and C CS-2303, C-Term 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
Differences between Java and C CS-2303, C-Term 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
Differences between Java and C CS-2303, C-Term Statements Statements in C/C++:– Labeled statement Expression statement Compound statement Selection statement Iteration statement Jump statement
Differences between Java and C CS-2303, C-Term Statements Statements in C/C++:– Labeled statement Expression statement Compound statement Selection statement Iteration statement Jump statement E.g., cases of a switch statement Similar to Java
Differences between Java and C CS-2303, C-Term Statements Statements in C/C++:– Labeled statement Expression statement Compound statement Selection statement Iteration statement Jump statement Any expression followed by ';' Much like to Java
Differences between Java and C CS-2303, C-Term Statements Statements in C/C++:– Labeled statement Expression statement Compound statement Selection statement Iteration statement Jump statement Sequence of statements enclosed in "{}" Called a “block” in Java
Differences between Java and C CS-2303, C-Term Statements Statements in C/C++:– Labeled statement Expression statement Compound statement Selection statement Iteration statement Jump statement switch (expr) if (expr)statement if (expr) statement else statement Same as in Java
Differences between Java and C CS-2303, C-Term Statements Statements in C/C++:– Labeled statement Expression statement Compound statement Selection statement Iteration statement Jump statement while (expr) statement do statement while (expr); for (exp1; exp2, exp3) statement Very similar to Java
Differences between Java and C CS-2303, C-Term Statements Statements in C/C++:– Labeled statement Expression statement Compound statement Selection statement Iteration statement Jump statement break; continue; return expr Very similar to Java goto Not present in Java Not allowed in this course
Differences between Java and C CS-2303, C-Term Summary about Statements Pretty much the same in C/C++ and Java Be sure to check details in textbooks
Differences between Java and C CS-2303, C-Term 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!
Differences between Java and C CS-2303, C-Term printf() – Print formatted data printf("string containing '%' specifiers", expr 1, expr 2, expr 3, …); 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 expr i Copy the converted value to the output per instructions encoded in the conversion specifier Return number of characters printed
Differences between Java and C CS-2303, C-Term 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 course
Differences between Java and C CS-2303, C-Term 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
Differences between Java and C CS-2303, C-Term scanf() – Scan formatted data scanf("string containing '%' specifiers", &var 1, &var 2, &var 3, …); 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 var i 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.
Differences between Java and C CS-2303, C-Term 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.
Differences between Java and C CS-2303, C-Term 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
Differences between Java and C CS-2303, C-Term Summary Differences and similarities between Java and C Expressions Statements There are lots of other differences Will be covered during the course
Differences between Java and C CS-2303, C-Term Questions?