6.087-2 Variables and datatypes, operators in C-Language

Add to Favourites
Post to:

6.087 Lecture 2 – January 12, 2010Review Variables and data types Operators Epilogue 1 Review: C Programming language• C is a fast, small,general-purpose,platform independent programming language. • C is used for systems programming (e.g., compilers and interpreters, operating systems, database systems, microcontrollers etc.) • C is static (compiled), typed, structured and imperative. • "C is quirky, flawed, and an enormous success."–Ritchie 1 Review: Basics• Variable declarations: int i; float f; • Intialization: char c=’A’; int x=y=10; • Operators: +,−,∗,/,% • Expressions: int x,y,z; x=y∗2+z∗3; • Function: int factorial (int n); /∗function takes int , returns int ∗/2 6.087 Lecture 2 – January 12, 2010Review Variables and data types Operators Epilogue 3 DefinitionsDatatypes: • The datatype of an object in memory determines the set of values it can have and what operations that can be performed on it. • Cis a weakly typed language. It allows implicit conversions as well as forced (potentially dangerous) casting. Operators: • Operators specify how an object can be manipulated(e.g.,, numeric vs. string operations).• operators can be unary(e.g., -,++),binary (e.g.,+,-,*,/),ternary (?:)3 Definitions (contd.)Expressions: • An expression in a programming language is a combination of values, variables, operators, and functions Variables: • A variable is as named link/reference to a value stored in the system’s memory or an expression that can be evaluated. Consider: int x=0,y=0; y=x+2;. • x, y are variables • y = x +2 is an expression• + is an operator.4 Variable namesNaming rules: • Variable names can contain letters,digits and _Variable names should start with letters.• • Keywords (e.g., for,while etc.) cannot be used as variable names • Variable names are case sensitive. int x; int X declares two different variables. Pop quiz (correct/incorrect): • int money$owed; (incorrect: cannot contain $) • int total_count (correct) • int score2 (correct) • int 2ndscore (incorrect: must start with a letter) • int long (incorrect: cannot use keyword) 5 Data types and sizesC has a small family of datatypes. • Numeric (int,float,double) • Character (char) • User defined (struct,union) 6 Numeric data typesDepending on the precision and range required, you can use one of the following datatypes. signed unsigned short short int x;short y; unsigned short x;unsigned short int y; default int x; unsigned int x; long long x; unsigned long x; float float x; N/A double double x; N/A char char x; signed char x; unsigned char x; • The unsigned version has roughly double the range of its signed counterparts. • Signed and unsigned characters differ only when used in arithmetic expressions. • Titbit: Flickr changed from unsigned long (232 − 1) to string two years ago. 7 Big endian vs. little endianThe individual sizes are machine/compiler dependent. However, the following is guaranteed: sizeof(char)y?∗/• short int s=0xFFFF12; /∗correct?∗/• char c=−1;unsigned char uc=−1; /∗correct?∗/• puts("hel"+"lo");puts("hel""lo");/∗which is correct?∗/• enum sz{S=0,L=3,XL}; /∗what is the value of XL?∗/• enum sz{S=0,L=−3,XL}; /∗what is the value of XL?∗/13 6.087 Lecture 2 – January 12, 2010Review Variables and data types Operators Epilogue 14 Arithmetic operatorsoperator meaning examples + addition x=3+2; /∗constants∗/y+z; /∗variables∗/x+y+2; /∗both∗/-subtraction 3−2; /∗constants∗/int x=y−z; /∗variables∗/y−2−z; /∗both∗/* multiplication int x=3∗2; /∗constants∗/int x=y∗z; /∗variables∗/x∗y∗2; /∗both∗/14 Arithmetic operators (contd.)operator meaning examples /division float x=3/2; /∗produces x=1 (int /) ∗/float x=3.0/2 /∗produces x=1.5 (float /) ∗/int x=3.0/2; /∗produces x=1 (int conversion)∗/% modulus (remainder) int x=3%2; /∗produces x=1∗/int y=7;int x=y%4; /∗produces 3∗/int y=7;int x=y%10; /∗produces 7∗/15 Relational OperatorsRelational operators compare two operands to produce a ’boolean’ result. In C any non-zero value (1 by convention) is considered to be ’true’ and 0 is considered to be false. operator meaning examples > greater than 3>2; /∗evaluates to 1 ∗/2.99>3 /∗evaluates to 0 ∗/>= greater than or equal to 3>=3; /∗evaluates to 1 ∗/2.99>=3 /∗evaluates to 0 ∗/< lesser than 3<3; /∗evaluates to 0 ∗/’A’<’B’/∗evaluates to 1∗/<= lesser than or equal to 3<=3; /∗evaluates to 1 ∗/3.99<3 /∗evaluates to 0 ∗/16 Relational OperatorsTesting equality is one of the most commonly used relationaloperator == operator. != Gotchas: meaning equal to not equal to examples3==3; /∗evaluates to 1 ∗/’A’==’a’/∗evaluates to 0 ∗/3!=3; /∗evaluates to 0 ∗/2.99!=3 /∗evaluates to 1 ∗/Note that the "==" equality operator is different from the • "=", assignment operator.Note that the "==" operator on float variables is tricky• because of finite precision. 17 Logical operatorsoperator meaning examples && AND ((9/3)==3) && (2∗3==6); /∗evaluates to 1 ∗/(’A’==’a’) && (3==3) /∗evaluates to 0 ∗/|| OR 2==3 || ’A’==’A’; /∗evaluates to 1 ∗/2.99>=3 || 0 /∗evaluates to 0 ∗/! NOT !(3==3); /∗evaluates to 0 ∗/!(2.99>=3) /∗evaluates to 1 ∗/Short circuit: The evaluation of an expression is discontinued ifthe value of a conditional expression can be determined early.Be careful of any side effects in the code.Examples:• (3==3) || ((c=getchar())==’y’). The second expression is not evaluated. • (0) && ((x=x+1)>0) . The second expression is not evaluated. 18 Increment and decrement operatorsIncrement and decrement are common arithmetic operation. C provides two short cuts for the same. Postfix x++ is a short cut for x=x+1• • x−− is a short cut for x=x−1 • y=x++ is a short cut for y=x;x=x+1. x is evaluated before it is incremented. • y=x−− is a short cut for y=x;x=x−1. x is evaluated before it is decremented. 19 Increment and decrement operatorsPrefix: ++x is a short cut for x=x+1• • −−x is a short cut for x=x−1 • y=++x is a short cut for x=x+1;y=x;. x is evaluate after it is incremented. • y=−−x is a short cut for x=x−1;y=x;. x is evaluate after it is decremented. 20 Bitwise Operatorsoperator meaning examples & AND 0x77 & 0x3; /∗evaluates to 0x3 ∗/0x77 & 0x0; /∗evaluates to 0 ∗/| OR 0x700 | 0x33; /∗evaluates to 0x733 ∗/0x070 | 0 /∗evaluates to 0x070 ∗/ˆ XOR 0x770 ^ 0x773; /∗evaluates to 0x3 ∗/0x33 ^ 0x33; /∗evaluates to 0 ∗/« left shift 0x01<<4; /∗evaluates to 0x10 ∗/1<<2; /∗evaluates to 4 ∗/» right shift 0x010>>4; /∗evaluates to 0x01 ∗/4>>1 /∗evaluates to 2 ∗/Notes: • AND is true only if both operands are true. • OR is true if any operand is true. • XOR is true if only one of the operand is true. 21 Assignment OperatorsAnother common expression type found while programming in C is of the type var = var (op) expr x=x+1• • x=x∗10 • x=x/2 C provides compact assignment operators that can be used instead. • x+=1 /∗is the same as x=x+1∗/• x−=1 /∗is the same as x=x−1∗/• x∗=10 /∗is the same as x=x∗10 ∗/• x/=2 /∗ is the same as x=x/2 • x%=2 /∗is the same as x=x%2 22 Conditional ExpressionA common pattern in C (and in most programming) languages is the following: if ( cond ) x=; else x=; C provides syntactic sugar to express the same using the ternary operator ’?:’ sign=x>0?1:−1; isodd=x%2==1?1:0; if (x>0) if ( x%2==1) sign =1 isodd=1 else else sign=−1 isodd=0 Notice how the ternary operator makes the code shorter and easier to understand (syntactic sugar). 23 6.087 Lecture 2 – January 12, 2010Review Variables and data types Operators Epilogue 24 Type ConversionsWhen variables are promoted to higher precision, data is preserved. This is automatically done by the compiler for mixed data type expressions. int i;float f;f=i +3.14159; /∗ i is promoted to float , f=(float)i+3.14159 ∗ /Another conversion done automatically by the compiler is ’char’ ’int’. This allows comparisons as well as manupilations of →character variables. isupper =(c>=’A’ && c<=’Z’ )?1:0; /∗ c and literal constants are converted to int ∗ /if (! isupper ) c=c−’a’+’A’ ;/∗ subtraction is possible because of integer conversion ∗ /As a rule (with exceptions), the compiler promotes each term in an binary expression to the highest precision operand. 24 Precedence and Order of Evaluation• ++,–,(cast),sizeof have the highest priority• *,/,% have higher priority than +,₭ ==,!= have higher priority than &&,|| • assignment operators have very low priority Use () generously to avoid ambiguities or side effects associated with precendence of operators. • y=x∗3+2 /∗same as y=(x∗3)+2∗/• x!=0 && y==0 /∗same as (x!=0) && (y==0)∗/• d= c>=’0’&& c<=’9’/∗same as d=(c>=’0’) && (c<=’9’)∗/25 MIT OpenCourseWarehttp://ocw.mit.edu 6.087 Practical Programming in CIAP 2010For information about citing these materials or our Terms of Use,visit: http://ocw.mit.edu/terms.

Description
This lecture notes introduces Variables and datatypes, operators in C-Language.Here it explores various data types such as Int, Char, Float. It explains varoius operators such as arithmetic operators, Relational operators, Logical operators,Increment and decrement operators, Bitwise operators, Assignment operators, Type conversions and also about precedence and order of evaluation.

“Daniel Weller, Sharat Chikkerur,6.087-2 Variables and datatypes, operators. ,6.087 Practical Programming in C, Electrical Engineering and Computer Science , Engineering, Massachusetts Institute of Technology: MIT Open Course Ware,http://ocw.mit.edu (15-08-2011).License: Creative Commons BY-NC-SA: http://ocw.mit.edu/terms/#cc".

Comments

Want to learn?

Sign up and browse through relevant courses.

Name:
Your Email:
Password:
Country:
Contact no:


Area code Number
Subjects you are interested in:
Word verification: (Enter the text as in image)


Sign Up Already a member? Sign In
I agree to WizIQ's User Agreement & Privacy Policy
LearnOnline Through OCW
OpenCourseWare
User
102 Followers

Your Facebook Friends on WizIQ

Give live classes, create & sell online courses

Try it free Plans & Pricing

Connect