130 likes | 246 Views
Department of Computer and Information Science, School of Science, IUPUI. CSCI 230. Variable Declarations, Data types, Expressions - Variables and Operators. Dale Roberts, Lecturer Computer Science, IUPUI E-mail: droberts@cs.iupui.edu. address. variable. 36443. i.
E N D
Department of Computer and Information Science,School of Science, IUPUI CSCI 230 Variable Declarations, Data types, Expressions - Variables and Operators Dale Roberts, Lecturer Computer Science, IUPUI E-mail: droberts@cs.iupui.edu
address variable 36443 i value 45 size 4 bytes datatype int Memory Concepts • Variables • Variable names (identifiers) correspond to locations in the computer's memory (von Neuman model) • Every variable has a name, a type, a size and a value • Whenever a new value is placed into a variable (through scanf, for example), it replaces (and destroys) the previous value. (Destructive write) • Reading variables from memory does not change them • A visual representation (memory map)
Expression • Expressions are computations that return a value. • Like variables, a value is an instance of a data type. • Examples of expressions are: • 45 (int) • 2+3 (int) • 2.0/5.0 (double) • “Hello” (string) • x (the current value of variable int x)
Arithmetic Operators • Binary Operator (two operands) + (addition) - (subtraction) * (multiplication) / (division) % (modulus, remainder) (no **) • Unary Operator (single operands) - (no + ) Example: int i=1, j=2, k=3, x; x=i+2*j-22/k; x=-1+j; x=1+-j; x=+i+j; x=22%k; float f=1.5, g=0.5, y; y=2.5*f+4.0*g; Exercise: Try -5%3 -5%-3 5%-3 (hint: -5/3=-1 -5/-3=1 5/-3=-1 and R=x-y*i) • Mixed data types will be discussed later • Operators that have more than two operands use functional notation a = f(x,y,x). (x=1 + 4 -7 = -2) (x= 1) (x= -1) (wrong expression) (x= 1, remainder) (y=5.75) Ans: -2 -2 2
C operation Arithmetic Algebraic C expression operator expression + f + 7 Addition f + 7 - p - c Subtraction p – c * b * m Multiplication bm / x / y Division x / y % r % s Modulus r mod s Arithmetic Operators • Arithmetic operators:
Relational Operators • Binary Operators == != < > <= >= • Result is a integer:1 means TRUE 0 means FALSE • No logical type variable and constants • No space between the operators Example: 0 1 1 0 1 0 0==0 1 • int i=10, j=10, k=1; • i + j <= 3 + k 0
Logical (Boolean) Operators • Binary Operators && (and) || (OR) • Unary Operator ! (not) • Operand must be int • Use float or double, the result may not predictable nonzero (TRUE) zero (FALSE) • Result is int 1 (TRUE) 0 (FALSE) • Express connected by && or || are evaluated from left to right, and evaluation stops as soon as the truth or falsehood of the result is known. i.e. ‘expr1 && expr2’ is not equal to ‘expr2 && expr1’. This is called short-circuit evaluation. • ‘inward == 0’ normally be written as ‘!inward’ Example: 3 < 7 < 5 3 < 7 && 7 < 5 Example: Expression Result 5||3 5||0 5&&3 5&&0 i&&j (if i=0, j=0) i&&j+1 (if i=5, j=0) !5 !0 !i (if i=5) 1 1 1 0 0 1 0 1 0 (3 < 7) < 5 1 < 5 1 1 && 0 0
Conditional (ternary) Operator • Syntax expr1 ? expr2 : expr3 • If expr1 0, then execute expr2 and ignore expr3 • If expr1= 0, then execute expr3 and ignore expr2 Example: x = i+j ? i+1 : j+1 Example: x = 5 ? 4 : 2; /* x = 4 */ Example: j = 4; i = 2 x = i+j ? i+1 : j-1 /* x = 3 */ Example: l =a > b ? a : b; /* the larger of a and b */ Example: max =(a > b)?((a>c)?a:c):(b>c)?b:c); /* the maximum number among a, b, and c */ Example: x = a > 0 ? a: -a; /* the absolute value of a */
sizeof Operator • Syntax sizeof(expr) • The number of bytes occupied by expr • For most computers sizeof(3) 2 or 4 (bytes) (depending on16 bit CPU or 32 bit CPU), where 3 is an integer sizeof(3L) 4 (long int) sizeof(3.0) 8 (double float) Example: double i; printf(“%d”,sizeof(i)); 8 • Usually, this operator is used to get the size of an organized variable (like struct, union, …) • This is one of a few functions that are built-in. No #include is required.
Address Content 1000 1001 RAM 1002 100 1003 1004 1005 Address Operator • Syntax &var • Get the address of the variable • &means the address of var • Type of var may be (a) fundamental data type (b) organized data type Example: int i=100; printf(“%d %d”, &i, i);