.

Monday, June 3, 2019

Analysis of C Language and Operators

Analysis of C Language and OperatorsIntroductionIn order to perform assorted kinds of operations, C engrosss different kinds of streetwalkers. An slattern indicates an operation to be performed on data that yields a rank. Using various operators in C adept link the varyings and constants. An operand is a data item on which operators perform the operations. C is rich in the use of different operators. C provides four classes of operators. They be 1) Arithmetic 2) Relational 3) arranged 4) Bitwise. Apart from these basic operators, C in any case supports additional operators.3.1 Types of operatorsType of Operator Symbolic Representation Arithmetic operators + , -, *, / and % Relational operators ,=. synthetic operators , II and Increment and lessening operator ++ and duty assignment operator = Bitwise operators ,I,,,and Comma operator , Conditional operator ? 3.2 PRIORITY OF OPERATORS AND THEIR CLUBBINGVarious relational operators take a crap different priorities or a ntecedence. If an arithmeticalalal fictitious subjectface contains more operators then the execution testament be performed according to their priorities. The precedence is set for different operators in C. magnetic inclination of operators with priority wise (hierarchical) ar shown in circuit board 3.2. turn off 3.2 List of operators with priority wise Operators Operation Clubbing Priority ( ) - . Function c t break ensemble Array expression or real bracket Structure Operator Structure Operator go forth to right 1st+ ++ * Sizeof eccentric Unary plus Unary subtraction Increment lessening Not operator Ones complement Pointer Operator Address operator Size of an object Type cast right-hand(a) to Left 2nd * / % contemporaries Division Modular division Left to Right 3rd + Addition Subtraction Left to Right 4th Left shift Right mistake Left to Right 5th = Less than Less than or equal to Greater than Greater than or equal to Left to Right 6th == = equival ence In par Left to Right 7th Bitwise AND Left to Right 8th Bitwise XOR Left to Right 9th Bitwise OR Left to Right 10th Logical AND Left to Right 11th Logical OR Left to Right 12th ? Conditional operator Right to Left 13th =,*=,-=, =,+=,=, =,= Assignment operator Right to Left 14th , Comma operator Left to Right 15th 1) When 2 operators of the same priority ar found in the expression, precedence is accustomed to the extreme left operator. Example Example Example3.3 COMMA AND CONDITIONAL OPERATOR1) Comma operator (,) The comma operator is utilize to separate 2 or more expressions. The comma operator has the lowest priority among all the operators. It is not essential to enclose the expressions with comma operators within the p arnthesis. For example the avouchments tending(p) under are valid.Example2) Conditional operator (?) The qualified operator contains a condition take overed by two program lines or values. If the condition is confessedly the first statemen t is executed otherwise the second statement. The conditional operator (?) and () are sometimes called ternary operators because they take three arguments. The syntax of conditional operator is as given below.SyntaxCondition? (expression1) (expression2)Two expressions are separated by a colon. If the condition is true expression1 gets evaluated otherwise expression 2. The condition is al sorts written forward? Mark. Example Example3.4 ARITHMETIC OPERATORSThere are two emblems of arithmetic operators. They are 1) Binary Operator and 2) Unary Operator a) Binary operator Table 3.3 shows different arithmetic operators that are used in C. These operators are harshly used in most of the computer languages. These arithmetic operators are used for quantitative calculations between the two constant values. They are also called as Binary Arithmetic Operators. The examples are also shown in the Table 3.3 In the program variables are declared instead of constants.Table 3.3 Arithmetic opera torsArithmetic Operators Operator Explanation Examples + Addition 2+2=4 Subtraction 5-3=2 * Multiplication 2*5=10 / Division 10/2=5 % Modular Division 11%3=2 (Remainder 2)b) Unary Operators Unary operators are development operator (++), decrement (- -) and minus (-) . These operators and their descriptions are given in the Table 3.4.Table 3.4 Unary arithmetic operatorsOperator Description or Action minus ++ Increment Decrement Address Operator Size of Gives the size of variablea) Minus (-) Unary minus is used to indicate or change the algebraical sign of a value. b) Increment (++) Decrement () Operators The C compiling programs produce very fast efficient object codes for increment and decrement operations. This code is better than generated by using the equivalent fitting statement. So, increment and decrement operators should be used whenever possible. The operator ++ adds one to its operand. Whereas the operator subtracts one from its operand. For justification x=x+1 se at be written as x++ and x=x-1 can be written as x. Both these operators may either follow or precede the operand. That is, x=x+ 1 can be represented as x++ 01 ++xIf ++ or are used as a suffix to the variables raise then the post increased / decreased operations take sharpen. Consider an example for understanding ++ operator as a suffix to the variable.x=20 y=10 z=x*y++In the above equation the current value of y is used for the product. The result is 200, which is assigned to z. After multiplication, the value of y is increased by one. If ++ or -are used as a prefix to the variable name then pre increment/ decrement operations take place. Consider an example for understanding ++ operator as a prefix to the variable.x=20 y=10 z=x*++yIn the above equation the value of y is increased and then used for multiplication. The result is 220, which is assigned to z. The spare-time activity programs can be executed for verification of increment and decrement operations.Example 3.4 Exam ple 3.5c) Size of 0 and Operator The size of ( ) operator gives the bytes occupied by a variable. The result of bytes occupied varies from variable to variable depending upon its dab references. The operator prints address of the variable in the memory. The example given below illustrates the use of two the operators. Example 3.63.5 RELATIONAL OPERATORSThese operators are used to distinguish between two values depending on their relations. These operators provide the relationship between the two expressions. If the relation is true then it surpasss a value 1 otherwise 0 for bastard relation. The relational operators together with their descriptions, example and return value are described in Table 3.5.Table 3.5 Relational OperatorOperators Description or Action Example authorise Value Greater than 54 1 = Greater than equal to 11=5 1 = = Equal to 2==3 0 = Not equal to 3=3 0The relational operators symbols are easy to understand. They are self-explanatory. yet readers benefi t a program is illustrated below. Example 3.7 Example 3.8 Example 3.9 Example 3.103.6 LOGICAL OPERATORSThe luculent relationship between the two expressions are checked with logical operators. Using these operators two expressions can be joined. After checking the conditions it provides logical true (1) or false (0) status. The operands could be constants, variables, and expressions. The Table 3.6 describes the three logical operators together with examples and their return values.Table 3.6 Logical OperatorsOperator Description or Action Example top Value Logical AND 53 5 Logical OR 85 8 Logical NOT 8 = 8 0From the above table sideline rules can be followed for logical operators.1) The logical AND ( ) operator provides true result when some(prenominal) expressions are true otherwise 0. 2) The logical OR (I I) operator provides true result when one of the expressions is true otherwise 0. 3) The logical NOT operator () provides 0 if the condition is true otherwise 1. Example 3.11 Example 3.12 Example 3.13 Example 3.14 Example 3.15 Example 3.163.7 BITWISE OPERATORSC supports a set of bitwise operators as listed in the Table 3.7. C supports six bit operators. These operators can operate only on whole number operands such(prenominal) as int, char, short, dogged int etc.Table 3.7 Bitwise operatorsOperator gist Right shift Bitwise xor (Exclusive OR) Ones complement Bitwise AND Bitwise OR Example 3.17 Example 3.18 Example 3.19 Example 3.20 Example 3.21SUMMARYYou strike now studied the various operators such as arithmetic, logical and relational which are essential to write and execute programs. The precedence of the operators in the arithmetic operations furnished in the form of a table. The conditional comma operators and programs on them, also described in this chapter. You are made aware of the logical operators OR, AND and NOT. Full descriptions on bit wise operators affirm been illustrated. Numerous Simple examples have been provided to the users to understand the various operators. The reader is expected to write more programs on this chapter.EXCERSICESAnswer the following questions.1. Explain different types of operators operable in C? 2. What are the uses of comma (,) and conditional (?) operators? 3. What are Unary operators and their uses? 4. Describe logical operators with their return values? 5. Distinguish between logical and bitwise operators. 6. What are the relational operators? 7. What is the difference between = and = = ? 8. What are the symbols used for a) OR b) AND c) XOR d) NOT operations? 9. Explain the precedence of operators in arithmetic operations? 10. List the operators from high priority to least priority? 11. What is the difference between %f and %g? 12. What is the difference between division and modular division operations? 13. What are the ASCII codes? List the codes for digits 1 to 9, A to Z and a to z.We have already seen that individual constants, variables, array elements and functi on references joined together by various operators to form expressions. We have also mentioned that C includes a number of operators which fall into several different categories. In this chapter we examine certain of categories in detail. Specifically, we will see how arithmetic operators, single operators, relational and logical operators, assignment operators and the conditional operator are used to form expressions. The data items that operators act upon are called operands. Some operators require two operands, era others act upon only one operand. Most operators allow the individual operands to be expressions. A few operator permit only single variables as operands (more most this later).3.1 ARITHMETIC OPERATORSThere are five arithmetic operators in C. They areOperator Purpose+ addition subtraction * multiplication / division % equilibrium by and by whole number divisionThe %operator is sometimes referred to as the modulus operator.There is no exponentiation operator in C. However, there is a subroutine subroutine library function (prisoner of war) to die hard out(a) exponentiation (see Sec.3.6).The operands acted upon by arithmetic operators must represent numeric values. Thus, the operands can be integer quantities, wandering-point quantities or characters (remember -that character constants represent integer values, as determined by the computers character set). The remainder operator (%) requires that both operands be integers and the second operand be nonzero. Similarly, the division operator (I) requires that the second operand be nonzero.Division of one integer quantity by another is referred to as integer division. This operation alship canal results in a truncated quotient (i.e., the decimal portion of the quotient will be dropped). On the other hand if a 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. mannikin 3.1 obje ct lesson 3.2 grammatical case 3.3Operands that differ in type may undergo type conversion before the expression takes on its last value. In general, the final result will be verbalized in the highest precision possible, consistent with the data types of the operands. The following rules apply when un get laid / operand is unsigned.1. If both operands are floating-point types whose precisions differ (e.g., a float and a double), the lower precision operand will be reborn to the precision of the other operand, and the result will be expressed in this higher precision. Thus, an operation between a float and a double will result in a double a float and a immense double will result in a long double and a double and a long double will result in a long double. (Note In some versions of C, all operands of type float are automatically converted to double.)2. If one operand is a floating-point type (e.g., float, double or long double) and the other is a char or an int (including short int or long int), the char or int will be converted to the floating-point type and the result will be expressed as such. Hence, an operation between an int and a double will result in a double.3. If neither operand is a floating-point type only if one is a long int, the other will be converted to long int and the result will be long into Thus, an operation between a long int and an int will result in a long int.4. If neither operand is a floating-point type or a long int, then both operands will be converted to int (if necessary) and the result will be into Thus, an operation between a short int and an int will result in an int.A detailed summary of these rules is given in Appendix D. Conversions involving unsigned operands are also explained in Appendix D.EXAMPLE 3.4 EXAMPLE 3.5 EXAMPLE 3.6 EXAMPLE 3.7 EXAMPLE 3.8 EXAMPLE 3.93.2 UNARY OPERATORSC includes a class of operators that act upon a single operand to produce a new value. Such operators are cognize as unary operators. U nary operators usually precede their single operands, though some unary operators are written after their operands.Perhaps the most common unary operation is unary minus, where a numerical constant, variable or expression is preceded by a minus sign. (Some programming languages allow a minus sign to be included as a part of a numeric constant. In C, however, all numeric constants are positive. Thus, a negative number is actually an expression, consisting of the unary minus operator, followed by a positive numeric constant.)Note that the unary minus operation is distinctly different from the arithmetic operator which denotes subtraction (-). The subtraction operator requires two separate-operands.3.3 RELATIONALAND LOGICAL OPERATORSThere are four relational operators in C. They areOperator Meaning great than = greater than or equal to These operators all fall within the same precedence group, which is lower than the arithmetic and unary operators. The associatively of these operato rs is left to right. Closely associated with the relational operators are the following two equality operators.Operator Meaning== equal to = not equal toThe equality operators fall into a separate precedence group, beneath the relational operators. These operators also have a left-to-right associatively. These six operators are used to form logical expressions, which represent conditions that are either true or false. The resulting expressions will be of type integer, since true is represented by the integer value 1 and false is represented by the value 0.EXAMPLE 3.15 EXAMPLE 3.16 EXAMPLE 3.17 EXAMPLE 3.18 EXAMPLE 3.19 EXAMPLE 3.203.4 ASSIGNMENT OPERATORSThere are several different assignment operators in C. All of them are used to form assignment .expressions which assign the value of an expression to an identifier. The most commonly used assignment operator is = Assignment expressions that make use of this operator are written in the form identifier = expression where identifier g enerally represents a variable, and expression represents a constant, a variable or a more complex expression.EXAMPLE 3.21Remember that the assignment operator = and the equality operator == are distinctly different. The assignment operator is used to assign a value to an identifier, whereas the equality operator is used to determine if two expressions have the same value. These operators cannot be used in place of one another. Beginning programmers often incorrectly use the assignment operator when they want to test for equality. This results in a logical error that is usually difficult to detect. Assignment expressions are often referred to as assignment statements, since they are usually written as complete statements. However, assignment expressions can also be written as expressions that are included within other statements (more about this in later chapters).If the two operands in an assignment expression are of different data types, then the value of the expression on the rig ht (i.e., the right-hand operand) will automatically be converted to the type of the identifier on the left. The entire assignment expression will then be of this same data type. Under some circumstances this automatic type conversion can result in an alteration of the data being assigned. For exampleA floating-point value may be truncated if assigned to an integer identifier. A double-precision value may be rounded if assigned to a floating-point (single-precision) identifier. An integer quantity may be altered if assigned to a shorter integer identifier or to a character identifier (some high-order bits may be lost). Moreover the value of a character constant assigned to a numeric-type identifier will be hooklike upon the point character set in use. This may result in inconsistencies from one version of C to another. The careless use of type conversions is a haunt source of error among beginning programmers.EXAMPLE 3.22 EXAMPLE 3.23 EXAMPLE 3.24 EXAMPLE 3.25THE CONDITIONAL OPER ATORSimple conditional operations can be carried out with the conditional operator (? ). An expression that makes use of the conditional operator is called a conditional expression. Such an expression can be written in place of the more traditional if -else statement, which is discussed in Chap.6. A condition expression is written in the formexpression 1 ? expression 2 expression 3When evaluating a conditional expression, expression 1 is evaluated first. If expression 1 is true (i.e., if, its value is nonzero), then expression 2 is evaluated and this becomes the value of the conditional expression. However, if expression 1 is false (i.e., if its value is zero),then expression 3 is evaluated and this becomes the value of the conditional expression. Note that only one of the embedded expressions (either expression 2 or expression 3) is evaluated when ascertain the value of a conditional expression.EXAMPLE 3.26 EXAMPLE 3.27 EXAMPLE 3.28 EXAMPLE 3.29LIBRARY FUNCTIONSThe C language is accompanied by a number of library functions that go out various commonly used operations or calculations. These library functions are not a part of the language per se, though all implementations of the language include them. Some functions return a data item to their access point others indicate whether a condition is true or false by returning a 1 or a 0, respectively still others carry out specific operations on data items but do not return anything. Features which tend to be computer-dependent are generally written as library functions.For example, there are library functions that carry out standard input/output operations (e.g., read and write characters, read and write numbers, open and close files, test for end of file, etc.), functions that perform operations on characters (e.g., convert from lower- to uppercase, test to see if a character is uppercase, etc.), and function that perform operations on strings (e.g., copy a string, compare strings, concatenate strings, etc.), and functions that carry out various mathematical calculations (e.g., evaluate trigonometric, logarithmic and exponential functions, compute absolute values, square themes, etc.). Other kinds of library functions are also available.Library functions that are functionally similar are usually grouped together as (compiled) object programs in separate library files. These library files are supplied as a part of each C compiler. All C compilers contain similar groups of library functions, though they lack precise standardization. Thus there may be some variation in the library functions that are available in different versions of the language.A typical set of library functions will include a fairly large number of functions that are common to most C compilers such as those shown in Table 3-2 below. Within this table, the column labeled type refers to the data type of the quantity that is returned by the function. The void entry shown for function srand indicates that nothing is return ed by this function.A more extensive list, which includes all of the library functions that see in the programming examples presented in this book, is shown in Appendix H. For complete list, see the programmers reference manual that accompanies your particular version of C.A library function is accessed but by writing the function name, followed by a list of arguments that represent information being passed to the function. The arguments must be enclosed in parentheses and separated by commas. The arguments can be constants, variable names, or more complex expressions. The parentheses must be present, even if there are no arguments.A function that returns a data item can appear anywhere within an expression, in place of a constant or an identifier(i.e., in place of a variable or an array element). A function that carries out operations on data items but does not return anything can be accessed simply by writing the function name, since this type of function reference constitutes a n expression statement.Table 3-2 Some Commonly Used Library FunctionsFunction Type Purposeabs(i) Int bring round the absolute value of i. ceil(d) double Round up to the next integer value (the smallest integer that is greater than or equal to d). cos(d) double Return the cosine of d. cosh (d) double Return the hyperbolic cosine of d. exp (d) double Raise e to the power d (e =2.7182818. .. is the base of the natural (Naperian) system of logarithms). fabs (d) double Return the absolute value of d. floor (d) double Round down to the next integer value (the largest integer that does not exceed d). fmod (d1,d2) double Return the remainder (i.e., the noninteger part of the quotient) of d1/d2, with same sign as d1. getchar () int Enter a character from the standard input device. log (d) double Return the natural logarithm of d. pow (d1,d2) double Return d1 raised to the d2 power. printf() int Send data items to the standard output device (arguments are complicated see Chap. 4). pitcher int Send a character to the standard output device rand ( ) int Return a random positive integer. sin (d) double Return the sine of d. sqrt (d) double Return the square root of d. srand (u) void Initialize the random number generator. scanf() int Enter data items from the standard input device (arguments are complicated see Chap. 4). tan (d) double Return the tangent of d. toascii int Convert value of argument to ASCII. tolower int Convert letter to lowercase toupper int Convert letter to uppercase.NoteType refers to the data type of the quantity that is returned by the function.c denotes a character-type argument i denotes an integer argument d denotes a double-precision argument u denotes an unsigned integer argumentEXAMPLE 3.30 EXAMPLE 3.31Review Questions1. What is an expression? What are its components? 2. What is an operator? Describe several different types of operators that are included in C. 3. What is an operand? What is the relationship between operators and operands? 4. Describe the five arithmetic operators in C. Summarize the rules associated with their use. 5. Summarize the rules that apply to expressions whose operands are of different types. 6. How can the value of an expression be converted to a different data type? What is this called? 7. What is meant by operator precedence? What are the relative precedences of the arithmetic operators? 8. What is meant by associativity? What is the associativity of the arithmetic operators? 9. When should parentheses be included within an expression? When should the use of parentheses be avoided. 10. In what order are the operations carried out within an expression that contains nested parentheses? 11. What are unary operators? How many operands are associated with a unary operator? 12. Describe the six unary operators discussed in this chapter. What is the purpose of each? 13. Describe two different ways to utilize the increment and decrement operators. How do the two method differ? 14. What is the re lative precedence of the unary operators compared with the arithmetic operators? What is their associativity? 15. How can the number of bytes allocated to each data type be determined for a particular C compiler? 16. Describe the four relational operators included in C. With what type of operands can they be used? What type of expression is obtained? 17. Describe the two equality operators included in C. How do they differ from the relational operators? 18. Describe the two logical operators included in C. What is the purpose of each? With what type of operands can they be used? What type of expression is obtained? 19. What are the relative precedences of the relational, equality and logical operators with respect to one another and with respect to the arithmetic and unary operators? What are their associativities? 20. Describe the logical not (logical negation) operator. What is its purpose? Within which precedence group is it included? How many operands does it require? What is i ts associativity? 21. Describe the six assignment operators discussed in this chapter. What is the purpose of each? 22. How is the type of an assignment expression determined when the two operands are of different data types? In what sense is this situation sometimes a source of programming errors? 23. How can multiple assignments be written in C? In what order will the assignments be carried out? 24. What is the precedence of assignment operators relative to other operators? What is their associativity? 25. Describe the use of the conditional operator to form conditional expressions. How is a conditional expression evaluated? 26. How is the type of a conditional expression determined when its operands differ in type? 27. How can the conditional operator be combined with the assignment operator to form an if -else type statement? 28. What is the precedence of the conditional operator relative to the other operators described in this chapter? What is its associativity? 29. Describe, in general terms, the kinds of operations and calculations that are carried out by the C library functions. 30. Are the library functions actually a part of the C language? Explain. 31. How are the library functions usually packaged within a C compiler? 32. How are library functions accessed? How is information passed to a library function from the access point? 33. What are arguments? How are arguments written? How is a call to a library function written if there are no arguments? 34. How is specific information that may be required by the library functions stored? How is this information entered into a C program? 35. In what general category do the define and include statements fall?INTRODUCTIONC supports a rich set of operators. We have already used several of them, such as =, +. -, *, and, C operators can be classified into a number of categories. They include1. Arithmetic operators. 2. Relational operators. 3. Logical operators. 4. Assignment operators. 5. Incrementand decreme nt operators. 6. Conditional operators. 7. Bitwiseoperators. 8. Speciaolperators.3.2 ARITHMETIC OPERATORSC provides all the basic arithmetic operators. They are listed in Table 3.1. The operators +, -, * and I all work the same way as they do in other languages. These can operate on any built-in data type allowed in C. The unary minus operator, in effect, multiplies its single operand by -1. Therefore, a number preceded by a minus sign changes its sign.Table 3.1 Arithmetic OperatorsOperator Meaning+ Addition or unary plus Subtraction or unary minus * Multiplication / Division % Modulo divisionInteger division truncates any fractional part. The modulo division produces the remainder of an integer division. Examples of arithmetic operators area b a + b a * b a / b a % b -a * bHere a and b are variables and are known as operands. The modulo division operator % cannot be used on floating point data. Note that C does not have an operator for exponentiation. Older versions of C does not support unary plus but ANSI C supports it.Integer ArithmeticWhen both the operands in a single arithmetic expression such as a+b are integers, the expression is called an integer expression, and the operation is called integer arithmetic. Integer arithmetical ways yields an integer value. The largest integer value depends on the machine, as pointed out earlier. In the above examples, if a and b are integers, then for a = 14 and b = 4 we have the following resultsa b = 10 a + b = 18 a*b=56 a / b = 3 (decimal part truncated) a % b = 2 (remainder of division)During integer division, if both the operands are of the same sign, the result is truncated towards zero. If one of them is negative, the direction of truncation is implementation dependent. That is,6/7 = 0 and -6/-7 = 0 but -6/7 may be zero or -1. (Machine dependent)Similarly, during modulo division, the sign of the result is always the sign of the first operand (the dividend.) That is-14 % 3 = -2 -14 % -3 = -2 14 % -3 = 2EXAMPL E 3.1Real ArithmeticAn arithmetic operation involving only real operands is called eal arithmetic. A real operand may assume values either in decimal or exponential notation. Since floating point values are rou

No comments:

Post a Comment