.

Sunday, March 31, 2019

Analysis of C Language and Operators

Analysis of C style and manipulatorsIntroductionIn order to perform dis identical kinds of movements, C consumptions diverse kinds of floozies. An f workor indicates an operation to be performed on info that yields a look upon. utilize various doers in C genius link the inconsistents and unremittings. An operand is a entropy item on which actors perform the operations. C is rich in the recitation of contrasting doers. C provides quad classes of street girls. They atomic declination 18 1) arithmetical 2) Relational 3) pellucid 4) Bitwise. A subroutine from these basic floozys, C in addition supports additional operators.3.1 casefuls of operatorsType of doer Symbolic Representation arithmetic operators + , -, *, / and % Relational operators ,=. lawful operators , II and gain and diminution operator ++ and Assignment operator = Bitwise operators ,I,,,and Comma operator , antecedental operator ? 3.2 PRIORITY OF OPERATORS AND THEIR CLUBBINGVarious relative operators be feed different priorities or inauguratence. If an arithmetical demonstration contains more operators then the execution exit be performed according to their priorities. The precession is focalize for different operators in C. angle of inclination of operators with priority wise (hierarchical) ar shown in accede 3.2. shelve 3.2 itemisation of operators with priority wise meanss Operation Clubbing Priority ( ) - . Function vociferate Array grammatical construction or squ argon bracket Structure hooker Structure street girl odd to right 1st+ ++ * Sizeof temper single accession single disconfirming Increment Decrement Not operator Ones complement Pointer Operator Address operator Size of an quarry Type cast make up to Left 2nd * / % Multiplication class Modular year Left to Right 3rd + Addition price reduction Left to Right 4th Left shift Right crack Left to Right 5th = Less than Less than or twin to greater than G reater than or disturb to Left to Right sixth == = Equality In equating Left to Right 7th Bitwise AND Left to Right 8th Bitwise XOR Left to Right 9th Bitwise OR Left to Right tenth Logical AND Left to Right 11th Logical OR Left to Right 12th ? Conditional operator Right to Left thirteenth =,*=,-=, =,+=,=, =,= Assignment operator Right to Left 14th , Comma operator Left to Right 15th 1) When two operators of the self identical(prenominal) priority argon found in the recipe, precedence is stipulation to the extreme left(p) operator. face recitation caseful3.3 COMMA AND conditional OPERATOR1) Comma operator (,) The comma operator is social occasion to separate two or more rules. The comma operator has the lowest priority among all the operators. It is non internal to enclose the materialisations with comma operators deep down the p arnthesis. For example the disceptations given below atomic number 18 valid. grammatical case2) Conditional operator (?) The condit ional operator contains a condition followed by two statements or set. If the condition is honest the runner statement is penalise some early(a)wise the second statement. The conditional operator (?) and () ar sometimes called ternary operators beca intake they move come forward three arguments. The syntax of conditional operator is as given below.SyntaxCondition? ( facial gesture1) ( demeanor2)Two expressions are separated by a colon. If the condition is consecutive expression1 gets evaluated otherwise expression 2. The condition is aeonianly written before? Mark. Example Example3.4 ARITHMETIC OPERATORS there are two types of arithmetic operators. They are 1) Binary Operator and 2) Unary Operator a) Binary operator Table 3.3 shows different arithmetic operators that are apply in C. These operators are commonly use in about of the calculator talking tos. These arithmetic operators are utilise for numerical calculations amid the two cons common topazt levers. Th ey are also called as Binary Arithmetic Operators. The examples are also shown in the Table 3.3 In the program changeables are declared sort of of constants.Table 3.3 Arithmetic operatorsArithmetic Operators Operator Explanation Examples + Addition 2+2=4 Subtraction 5-3=2 * Multiplication 2*5=10 / component affair 10/2=5 % Modular Division 11%3=2 (Remainder 2)b) Unary Operators Unary operators are growth operator (++), reduction (- -) and minus (-) . These operators and their descriptions are given in the Table 3.4.Table 3.4 Unary arithmetic operatorsOperator Description or execution Minus ++ Increment Decrement Address Operator Size of Gives the size of it of variablea) Minus (-) Unary minus is used to indicate or change the algebraic sign of a cheer. b) Increment (++) Decrement () Operators The C compilers originate very fast efficient object codes for development and decrement operations. This code is better than generated by using the equivalent date 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 mint be written as x++ and x=x-1 give the bounce be written as x. Both these operators may either follow or precede the operand. That is, x=x+ 1 can be stand for as x++ 01 ++xIf ++ or are used as a suffix to the variables name then the post change magnitude / decreased operations take interject. 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 adduceed to z. After multiplication, the value of y is increased by one. If ++ or -are used as a affix 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 following programs can be executed for verification of increment and decrement operations.Example 3.4 Example 3.5c) Size of 0 and Operator The size of ( ) operator gives the bytes occupied by a variable. The number of bytes occupied varies from variable to variable dep remnanting upon its dab types. The operator prints address of the variable in the memory. The example given below illustrates the use of twain the operators. Example 3.63.5 RELATIONAL OPERATORSThese operators are used to distinguish mingled with two values depending on their relations. These operators provide the relationship amidst the two expressions. If the relation is unfeigned then it returns a value 1 otherwise 0 for wild relation. The relational operators unitedly with their descriptions, example and return value are exposit in Table 3.5.Table 3.5 Relational OperatorOperators Description or Action Examp le Return apprize 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. However memoriseers benefit a program is illustrated below. Example 3.7 Example 3.8 Example 3.9 Example 3.103.6 consistent OPERATORSThe analytic relationship between the two expressions are checked with analytical operators. Using these operators two expressions can be joined. After checking the conditions it provides limpid true (1) or dishonorable (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 Return Value Logical AND 53 5 Logical OR 85 8 Logical not 8 = 8 0From the above table following rules can be followed for logical operators.1) The logical AND ( ) operator provides true result when bo th 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 draw only on whole number operands much(prenominal) as int, char, neat, long int and so forthTable 3.7 Bitwise operatorsOperator Meaning 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 have now studied the various operators such as arithmetic, logical and relational which are essential to keep open and execute programs. The precedence of the operators in the arithmetic operations furnished in the form of a table. The conditional comma ope rators and programs on them, also described in this chapter. You are made sensitive of the logical operators OR, AND and NOT. Full descriptions on bit wise operators have been illustrated. legion(predicate) 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 purchasable 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 higher priority to least priority? 11. What is the difference between %f and %g? 12. What is the difference between category and modular member 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 bit references joined together by various operators to form expressions. We have also mentioned that C implicates a number of operators which fall into several different categories. In this chapter we examine current of categories in detail. Specifically, we forget see how arithmetic operators, single operators, relational and logical operators, identification operators and the conditional operator are used to form expressions. The info items that operators act upon are called operands. Some operators require two operands, while 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 well-nigh this later).3.1 ARITHMETIC OPERATORSTher e are five arithmetic operators in C. They areOperator Purpose+ addition subtraction * multiplication / division % oddment after whole number divisionThe %operator is sometimes referred to as the modulus operator.There is no exponentiation operator in C. However, there is a program depository depository library function (pow) to carry taboo exponentiation (see Sec.3.6).The operands acted upon by arithmetic operators essential represent numeric values. Thus, the operands can be integer quantities, move- manoeuver quantities or constitutions (remember -that disposition constants represent integer values, as contumacious by the computers component set). The proportion 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 always 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. archetype 3.1 EXAMPLE 3.2 EXAMPLE 3.3Operands that differ in type may undergo type con pas seul before the expression takes on its final exam value. In general, the final result will be expressed in the highest clearcutness possible, consistent with the schooling types of the operands. The following rules apply when neither / operand is unsigned.1. If both operands are floating-point types whose precisions differ (e.g., a float and a duple), 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 figure will result in a double a float and a long double will result in a long double and a double and a long double will result in a long double. ( argument In some adaptions 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 but 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 als o explained in Appendix D.EXAMPLE 3.4 EXAMPLE 3.5 EXAMPLE 3.6 EXAMPLE 3.7 EXAMPLE 3.8 EXAMPLE 3.93.2 single OPERATORSC includes a class of operators that act upon a single operand to produce a new value. Such operators are known as unary operators. Unary 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 speechs allow a minus sign to be include as a part of a numeric constant. In C, however, all numeric constants are overbearing. Thus, a cast out number is actually an expression, consisting of the unary minus operator, followed by a imperative 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 OPERAT ORSThere are four relational operators in C. They areOperator Meaning greater 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 operators 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 appointment operators in C. All of them are u sed to form date .expressions which assign the value of an expression to an identifier. The most commonly used fitting operator is = Assignment expressions that make use of this operator are written in the form identifier = expression where identifier generally represents a variable, and expression represents a constant, a variable or a more complex expression.EXAMPLE 3.21 look upon 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 include within other statements (more about this in later chapters).If the two operands in an assignment expression are of different entropy types, then the value of the expression on the right (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 info type. Under some mint this automatic type conversion can result in an innovation 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 dependent upon the partic ular character set in use. This may result in inconsistencies from one version of C to another. The careless use of type conversions is a frequent inception of error among beginning programmers.EXAMPLE 3.22 EXAMPLE 3.23 EXAMPLE 3.24 EXAMPLE 3.25THE CONDITIONAL OPERATORSimple 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 determining 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 carry 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 adit point others indicate whether a condition is true or false by returning a 1 or a 0, one by one 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 stimulant/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., counterpart a string, compare strings, concatenate strings, etc.), and functions that carry out various numerical calculations (e.g., evaluate trigonometric, logarithmic and exponential functions, compute absolute values, square(p) roots, etc.). early(a) 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 separately 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 l arge number of functions that are common to most C compilers such as those shown in Table 3-2 below. Within this table, the tug labeled type refers to the data type of the quantity that is returned by the function. The de purse entry shown for function srand indicates that nothing is returned by this function.A more long list, which includes all of the library functions that appear 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 obviously 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, dismantle if there are no arguments.A function that returns a data item can appear anywh ere 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 an expression statement.Table 3-2 Some Commonly Used Library FunctionsFunction Type Purposeabs(i) Int Return 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 high-sounding 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. tarradiddle (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 tress. 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 transpose 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 arg ument 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. add 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 relative 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 its 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 event 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 w hen 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 restore 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 decrement 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 o f an integer division. Examples of arithmetic operators area b a + b a * b a / b a % b -a * bhither 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 neg ative, 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 = 2EXAMPLE 3.1Real ArithmeticAn arithmetic operation involving only real operands is called eal arithmetic. A real operand may resume values either in decimal or exponential notation. Since floating point values are rou

No comments:

Post a Comment