Saturday, 3 September 2022

Chapter-8 Operators and Expressions

0 comments

 Chapter-8 Operators and Expressions 

CHAPTER NO.8 OPRATORS AND EXPRESSIONS IN C

 

8.1 INTRODUCTION

In the previous chapter, we have studied that variables and constants are used to store values in the program. To manipulate the data stored in these program elements, we have to use

operators. In order to perform different types of operations on the data, C provides many types of operators. An operator shows that what type of operation will be performed on the data. C supports a rich set of built-in operators. We have already used some operators such as =, +, -etc. in the previous chapter. In this chapter, we are going to have a detailed discussion about various types of operators that are available in C. We shall also discuss the method of using these operators, their order of evaluation in expressions etc.

 

8.2 CONCEPT OF OPERATOR AND OPERAND

Operators are the symbols which are used to perform some specific type of operation on data. For example: + symbol is used to perform addition, * is used to perform multiplication,>= is used to perform comparison etc. Here +, * and >= are the operators to perform different

types of operations. After performing the operations, all operators produce a value.

 

To perform any type of operation, we require Operands. Operands are the data items on which operators can perform operations. These operands can be either variables or constant values. Consider the following example:

 

In this example, + and * are the operators which perform the operation on variable ‘a’ and constant values 5 and 10. Here the variable ‘a’ and constant values 5 and 10 are called the

Operands.

 

8.3 EXPRESSION

An expression is like a formula in mathematics. An expression can be any valid combination of operators and operands. A valid combination is such a combination that confirms to the

syntax rules of C language. A valid expression is also known as well-formed-expression. An expression after evaluation always returns a single value. This result can be used in the C

programs. Expressions can be as simple as a single value and as complex as a large calculation.Consider the following examples:

 

It is a simple expressionwhere = operator is used with operands x and 2.9

 

It is a somewhat complex expression which consists of many operators and operands.Here, are the operators and x, 2.9, y, 3.6, 3.4 and z are the operands.

Now, consider the following combination of operators and operands which do not form a valid combination to be an expression:x+y=Z;

 

The above combination of operators and operands do not form a valid expression, although we are using valid operators and operands in the above example. But this combination of operators and operands do not follow the syntax rules of C language to be a valid expression.

Left side of = operator must represent a valid memory location (identifier) to store value of z.Here, x+y cannot be a valid identifier, because a valid identifier cannot have special character

other than underscore (as we learnt in the previous chapter).All C expressions can be categorized into following two types:

 

8.3.1 Numerical Expressions

These expressions are used to perform numerical calculations. These expressions always return a numerical value after evaluating operators and operands. Consider the following

examples:4+3

3.2-7.8

 

After evaluation above numerical expression, a numerical value 7 and -4.6 will be produced.

 

8.3.2 Logical or Conditional Expressions

These expressions are used to perform logical or conditional operations. These expressions always retum one of two possible values: cither true (1) or false (0). Consider the following

examples:14>6

15 <=6

 

After evaluating above conditional expressions, we receive true (1) for the first expression while false (0) for the second expression.

 

8.4 TYPES OF OPERATORS ACCORDING TO NUMBER OF OPERANDS

C providesa rich set of built-in operators. All these operators can be broadly divided into following three categories according to number of operands used by the operators:

 


8.4.1 Unary operators

An operator which requires only one operand to perform its operation is called Unary operator. Common example of unary operator is unary minus. Any positive operand associated

with unary minus gets its value changed. Consider the following example:

x= 10;

y =15;

Z= x4+(-y) ;

 

Here, z will be considered as z = 10+ (-15) which produce a result -5.

Since y is initially a positive integer variable, when operated by unary minus, gets its value changed. It will become negative. Some other examples of unary operators are: ++, —, ! and ~operators.

 

8.4.2 Binary operators

An operator which requires two operands to perform its operation is calledBinary operator.Most of the operators in C language are of binary type. The syntax for using binary operators is given below:

Operand! Operator Operand2

To use any binary operator, it must be put in between the operands. Consider the following examples:

atb

a>b

a=b

 

In these examples, + > and = are the examples of binary operators which are placed in between two operands: a and b.

 

8.4.3 Ternary Operator

This operator is also known as Conditional Operator. An operator which requires three operands to perform its operation is calledternary operator. There is only one ternary operator

in C. Ternary operator in C is represented using ? : symbols. The syntax for using this operator

is given below:exp! ? exp2 : exp3;

Here, exp1 must be a conditional expression which produces a result either true (1) or false (0). If the value of exp! is true then the exp2 will perform its function otherwise exp3 will

perform its function. Consider the following example:

a=5;

b=10;

c=a>b? a: b;

Here, the expression a>b will produce false (0) result (Operand1/exp1), therefore value of b (Operand3/exp3) will be stored in variable c. Variable a (Operand2/exp2) will not do any

function because it will perform its function only if exp1 is true (1).

 

 

8.5 GENERAL CLASSIFICATION OF OPERATORS

All C operators can be generally categorized into following categories:

1. Arithmetic Operators

2. Relational Operators

3. Logical Operators

4, Assignment Operators

5. Bitwise Operators

6. Increment & Decrement Operators

7. Conditional Operators

8. Additional Operators

 


Bitwise operators are used for very low level operations i.e. for machine level programming or for performing bit level operations.

 

8.5.1 Arithmetic Operators

Arithmetic operators are used to perform arithmetic operations such as: addition, subtraction,multiplication, division etc. There are five arithmetic operators in 'C’. All these operators are binary operators because all these operators require two operands to perform their operations.Following table shows the list and working of all these operators:



For arithmetic operators, operands can be integer values, floating-point values or character values. The modulus operator requires that both operands be integers & the second operand be

nonzero. Similarly, the division operator (/) requires that the second operand be nonzero,though the operands need not to be integers. Division of one integer by another is referred to as

integer division. With this division the decimal portion of the quotient will be dropped. If division operation is carried out with two floating- point numbers or with one floating-point

number and one integer, the result will be a floating-point quotient.

 

If one or both operands represent negative values, then the addition, subtraction,multiplication and division operations will result in values whose signs are determined by the usual rules of algebra. The interpretation of remainder operation is unclear when one of the operands is negative. Following programs show how to use arithmetic operators in C programming:

 


8.5.2. Relational operators

Relational operators are also called comparison operators. These operators are used to test the relationship between operands. In other words, these operators are used to compare values.

After comparison, these operators return either true (1) or false (0) value. All the relational operators present in C language are of binary type. It means these operators require two operands to perform their operation. There are 6 relational operators in C which are given below in the table with examples:

 


These relational operators are used to form logical expression representing condition. The resulting expression will be of type integer, since true is represented by the integer value 1 and false is represented by the value 0.

 


In the program 8.4 in the line 7, the statement a<b returns 0 as the result is false because 20 < 15. Therefore, in line 8 it shows result1=0. Similarly, in line 9, the statement a>b returns

1 as the result is true because 20>15. Therefore, in line 10 it shows result2=1.

 

8.5.3 Logical operators

Logical operators are also called Boolean Operators. These operators are used to make compound relational expressions. In other words, we can say that these operators are used

when we want to test more than one condition at a time. There are 3 Logical operators in C Language: ‘Logical AND'', ‘Logical OR’ and ‘Logical NOT’. Here, ‘Logical AND' and ‘Logical OR' are the binary operators whereas ‘Logical NOT’ is unary operator. Two operands are

required for ‘Logical AND' and ‘Logical OR' to perform their operations while one operand is required for ‘Logical NOT’ to perform its operation.

 

All Logical Operators also return either true or false value. The result of a logical AND operator will return true only if both operands are true, whereas the result of a logical OR operator will be true if either operand is true or if both operands are true. Logical NOT operator returns true only when its operand is false. Following table shows the list and working of all Logical Operators used in C language with suitable examples:

 





In the above program:

In line 6 — resultl = false && false and it will produce resulti= false (0)

 

In line 8 —> result2 = true || true and it will produce result2=true (1)

 

In line 10 — result3 = !(true) and it will produce result3=false (0)

 

8.5.4 Assignment operators

These Operators are used to assign or store values in variables etc. The symbol of assignment operator is =. Consider the following examples which show how to use assignment operator in C programs:

 

a=-2; if assigns -ve value (-2) to the variable.

 

b=5; /{ assigns value (5) to the variable,

 

c=atb; if assigns the result of expression to the variable.

a=a+t 10; /f self-assignment of a variable.

 

Assignment operators can also be used as shorthand operators. Shorthand assignment operators are useful in self-assignment statements. Following table shows the examples of

shorthand assignment operators used in C:

 

Let's assume int a=5;



Assignment operator and the equality (equal to) operator both are different types of operators. The assignment operator is used to assign a value to an identifier, whereas the equality operator is used to determine if two operands have the same value. These two operators cannot be used in place of one another.

 

If the two operands in an assignment expression are of different data types, then the value of the expression on the right will automatically be converted to the type of the identifier on the

left. For example:

int a=3.5;

 

Here, float value 3.5 will automatically be converted to type integer, i.e. value of variable a will become 3

8.5.5 Bitwise Operators

 

Bitwise operators are used for very low level operations, i.c. for machine level programming or for performing bit level operations. C provides the following operators for handling bitwise

operations:

 

1, Bit shift left (a specified number or bit positions)

 

2. Bit shift right(a specified number of bit positions)

 

3. Bitwise OR

 

4. A Bitwise XOR

 

5. & Bitwise AND

 

6.Bitwise one's complement

 

8.5.6 Increment and Decrement Operators

These are the unary operators. The symbol ++ is used for increment operator while symbol used for decrement operator. The increment operator causes its operand to increase by one

whereas the decrement operator causes its operand to decrease by one. The operand used with each of these operators must be a single variable. These operators cannot be applied directly on the constant values.

 

For example:

intx=10; (x is an integer variable that has been assigned a value of 10)

Following expression causes the value of x to be increased to 11 ++; (which is equivalent to x= x+1)Similarly, following expressioncauses the original value of x to be decreased to 9:

-K, (which is equivalent to x=x-1)

 

If we use 10++ or —10, it will be a wrong statement as we have already studied that these cannot be applied directly on the constant values.

The increment and decrement operators can each be utilized in two different ways. It depends on whether the operator is written before or after the operand:

Prefix increment and decrement

Postfix increment and decrement

 

If the operator precedes the operand, then the value of operand will be altered before it is used for its intended purpose within the program. This is called pre increment/decrement. If,however the operator follows the operand then the value of the operand will be changed after it is used. This is called post increment/ decrement.

 

For example:If the value of x is initially 10, it can be increased by two methods:you: (pre increment)

 

Here, at first, the value of x will be incremented to 11 and then this incremented value of x will be assigned to variable y, ic. y will also get value 11 (i.e. x=11 and y=11)y =x+4+; (post increment)

 

Here, at first, the value of x will be assigned to variable y (Lc. y will get value 10) then value of x will be incremented to 11 (i.e. y=10 and x=11)

 

Similarly, decrement operator can be used. For example:

y=-x; (pre decrement)

 

Here, first of all, the value of x will be decremented to 9 and then this decremented value of x will be assigned to variable y, ie. y will also get value 9 (i.e. x=9 and y=9)y=x-3 (post decrement)

 

Here, first of all, the value of x will be assigned to variable y (ic. y will get value 10) then value of x will be decremented to 9 (i.e. y=10 and x=9)

 

8.5.7 Conditional Operator (7 :)

It is a ternary operator. There is one and only one ternary operator { 7: ) in ‘C’ language.An expression that makes use of the conditional operator is called a conditional expression.

This operator has already been defined in the section 8.4.3 of this chapter. Please refer to the specified section for more details of this operator.

 

8.5.8 Additional Operators:

All the remaining operators that do not come under any above mentioned categories of operators, can be considered as additional operators. Examples of such operators are: sizeof( }operator, pointer operators, member selection operators etc.sizeof operator:

 

It is another unary operator. This operator returns the size of its operand, in bytes. This operator always precedes its operand. The operand may be an expression, or it may be a

variable or data type. Consider the following examples:

sizeof (x);

sizeof (float);

 

In first example, if x is of char type variable then it returns the result 1, while in example second, we pass keyword for data type float which returns 4 as float data type occupies four bytes in memory.

 

8.6 TYPE CONVERSION

The value of an expression can be converted to a different data type in C, if desired.When value of one type is converted into some other type, it is called Type Conversion.Operands that

differ in type may undergo type conversion before the expression takes on its final value. There are two ways of type conversions in C:

1. Implicit Conversion

2, Explicit Conversion

 

8.6.1 Implicit Conversion

This type of conversion is automatic. For this type of conversion, we use assignment (=)operator. This type of conversion is used when operand having lower data type is converted into higher data type. There is no loss of information in this type of conversion. Consider the following example for automatic conversion:

float n;

n= 5/2;

 

In this example, implicit conversion takes place, as integer type data, after integer division of 5/2 will produce result in the form of integer value, i.e. 2 (but not 2.5). This result will

automatically be converted into float type value so that it can be stored in the float variable i.e.value of variable n will become 2.000000 8.6.2 Explicit Conversion

 

This is forceful conversion. For this type of conversion, we use caste operator. There may or may not be any loss of information in this type of conversion. This type of conversion is

used when operand of higher data type is converted into lower data type.

The syntax for this type of casting is:

(esired data type) Expression

 

The name of data type into which the conversion is to be made is enclosed in parentheses and placed directly to the left of the value to be converted. The example of type casting is as follows:

 

For example:

float n;

n=(float)5/2;

 

The cast operator converts the value of 5 to its equivalent float representation (Le. 5.0)before the division by 2. Therefore, it will become float division and the result of division will

be 2.500000 which will be stored in the float variable n and hence the value of n will become 2.500000. The cast operator can be used on a constant or expression as well as on a variable.

 

 

 

8.7 PRECEDENCE/ HIERARCHY OF OPERATORS

The operators within C are grouped hierarchically according to their order of evaluation,known as precedence. Operators with a higher precedence are carried out before operators having a lower precedence. In simple words, the sequence of evaluation of operators in which they are applied on the operands in an expression is called the Precedence of Operators. The natural order can be altered by making use of parentheses.

 

1. Operators are the symbols which are used to perform some specific type of operation on data.

 

2. Operands are the data items on which operators can perform operations.

 

3. An Expression is like a formula in mathematics which can be any valid combination of operators and operands.

 

4. An operator which requires only one operand to perform its operation is calledUnary operator.

 

5. An operator which requires two operands to perform its operation is calledBinary operator.

 

6. Temary operator is also known as Conditional Operator which requires three operands to perform its operation.

 

7. ‘9% operator is also known as modulus operator which works only on integer operands.

 

8. Relational operators are symbols that are used to test the relationship between two variables.

 

9. There are three Logical operators in C language, they are and, or, not. They are represented by &&, Il and ! respectively

 

10. Assignment operators in C assign the value of an expression to an identifier and the most commonly used assignment operator is =.

 

11, The increment operator (+++) causes its operand to be increased by one.

 

12. The decrement operator (- -) causes its operand to be decreased by one.

 

13. When value of one type is converted into some other type, it is called Type Conversion.

 

14, The sequence of evaluation of operators in which they are applied on the operands in an expression is called the Precedence of Operators.

 

Part-A

1. Multiple Choice Questions

1. The symbols which are used to perform some specific type of operation on data are called?

a. Operands

b. Operators

c. Expressions

d. Formulas

 

2 Which operator acts only on one operand?

a. Unary

b. Binary

c. Ternary

d. Conditional

 

3. Which of the following is not a Logical Operator?

a And (&&)

b 56ORM

c. Equality (=)

d. NOT (!)

 

4. Which symbol is used for Ternary Operator?

a 32

b 37?

c 7:

d.7;

 

5. Which of the following cannot be considered as assignment operator?

a =

b.=

c.GQ +

d.%e

 

2. Fill in the Blanks:

1 _ are the data items on which operators can perform operations.

2 Unary operator acts on only operand.

3. _______ arithmetic operator performs only on integer operand.

4. When value of one type is converted into some other type, it is called ,

5. ‘Ternary operator is alzo known as .

 

3. Very Short Answer Type Questions

1. Which operator causes its operand to be increased by one?

2 Which operators are used to test the relationship between two variables?

3. Write all the Arithmetic Operators used in C programming.

4. Which operator recums the size of its operand, in bytes?

5. Write the name of two ways of type conversion.

6. How many relational operators are present in C Language?

 

Part-B

4. Short Answer Type Questions. (Write the answers in 4-5 lines)

 

1. Define Expression?

2 What is Operand?

3. What is Unary operator?

4. Define Conditional operator?

5. What is Type Conversion?

6. What is an operator? Write the name of different types of operators?

7. Write about increment and decrement operators?

 

Part-C

5, Long Answer Type Questions, (Write the answers in 10-15 lines)

 

1. Explain the Arithmetic Operators? Write any program using Arithmetic Operators?

2 What are Relational operators? Write any program of Relational operator?

3. Explain Logical operators? Write any program of Logical operator?

 

Write a C program to show the usage of Arithmetic operators

 

Write a C program to show the usage of conditional (ternary) operator

 

Write the C Programs to solve the following mathematical formulas:

2=10(5+1)%2

X=(5-+7)+(8+9*2)