Fundamental of Programming (C)

Similar documents
Fundamentals of Programming

Have the same meaning as variables in algebra Single alphabetic character Each variable needs an identifier that distinguishes it from the others a =

C: How to Program. Week /Mar/05

Chapter 2 - Introduction to C Programming

Introduction to C Programming. Chih-Wei Tang ( 唐之瑋 ) Department of Communication Engineering National Central University JhongLi, Taiwan

Programming for Engineers Introduction to C

Fundamentals of Programming. Lecture 3: Introduction to C Programming

Fundamental Data Types. CSE 130: Introduction to Programming in C Stony Brook University

Chapter 1 & 2 Introduction to C Language

Programming and Data Structures

DEPARTMENT OF MATHS, MJ COLLEGE

2/29/2016. Definition: Computer Program. A simple model of the computer. Example: Computer Program. Data types, variables, constants

Chapter 2, Part I Introduction to C Programming

Character Set. The character set of C represents alphabet, digit or any symbol used to represent information. Digits 0, 1, 2, 3, 9

Data types, variables, constants

Work relative to other classes

2.1. Chapter 2: Parts of a C++ Program. Parts of a C++ Program. Introduction to C++ Parts of a C++ Program

Fundamentals of Programming Session 4

Chapter 4: Basic C Operators

UNIT- 3 Introduction to C++

Full file at C How to Program, 6/e Multiple Choice Test Bank

A Fast Review of C Essentials Part I

UNIT IV 2 MARKS. ( Word to PDF Converter - Unregistered ) FUNDAMENTALS OF COMPUTING & COMPUTER PROGRAMMING

Variables in C. CMSC 104, Spring 2014 Christopher S. Marron. (thanks to John Park for slides) Tuesday, February 18, 14

c) Comments do not cause any machine language object code to be generated. d) Lengthy comments can cause poor execution-time performance.

CSc 10200! Introduction to Computing. Lecture 2-3 Edgardo Molina Fall 2013 City College of New York

LESSON 1. A C program is constructed as a sequence of characters. Among the characters that can be used in a program are:

ANSI C Programming Simple Programs

Features of C. Portable Procedural / Modular Structured Language Statically typed Middle level language

These are reserved words of the C language. For example int, float, if, else, for, while etc.

Programming Fundamentals (CS 302 ) Dr. Ihsan Ullah. Lecturer Department of Computer Science & IT University of Balochistan

Variables in C. Variables in C. What Are Variables in C? CMSC 104, Fall 2012 John Y. Park

Computer System and programming in C

6.096 Introduction to C++ January (IAP) 2009

BASIC ELEMENTS OF A COMPUTER PROGRAM

Visual C# Instructor s Manual Table of Contents

Variables Data types Variable I/O. C introduction. Variables. Variables 1 / 14

Chapter 2: Introduction to C++

Chapter 2: Special Characters. Parts of a C++ Program. Introduction to C++ Displays output on the computer screen

Introduction to C# Applications

C/Java Syntax. January 13, Slides by Mark Hancock (adapted from notes by Craig Schock)

C/Java Syntax. Lecture 02 Summary. Keywords Variable Declarations Data Types Operators Statements. Functions. if, switch, while, do-while, for

Data Types and Variables in C language

LECTURE 02 INTRODUCTION TO C++

Lecture 02 Summary. C/Java Syntax 1/14/2009. Keywords Variable Declarations Data Types Operators Statements. Functions

The C++ Language. Arizona State University 1

Chapter 2: Using Data

Java Notes. 10th ICSE. Saravanan Ganesh

Programming. Elementary Concepts

CS102: Variables and Expressions

Expressions and Data Types CSC 121 Spring 2015 Howard Rosenthal

Course Outline Introduction to C-Programming

A complex expression to evaluate we need to reduce it to a series of simple expressions. E.g * 7 =>2+ 35 => 37. E.g.

Reserved Words and Identifiers

Objectives. Chapter 2: Basic Elements of C++ Introduction. Objectives (cont d.) A C++ Program (cont d.) A C++ Program

Chapter 2: Basic Elements of C++

Basic Elements of C. Staff Incharge: S.Sasirekha

Chapter 2: Basic Elements of C++ Objectives. Objectives (cont d.) A C++ Program. Introduction

Operators. Java operators are classified into three categories:

Fundamental of C programming. - Ompal Singh

BITG 1233: Introduction to C++

Lecture 2 Tao Wang 1

GO - OPERATORS. This tutorial will explain the arithmetic, relational, logical, bitwise, assignment and other operators one by one.

Programming. C++ Basics

UNIT-2 Introduction to C++

C Language Part 1 Digital Computer Concept and Practice Copyright 2012 by Jaejin Lee

Chapter 3: Operators, Expressions and Type Conversion

Assoc. Prof. Dr. Marenglen Biba. (C) 2010 Pearson Education, Inc. All rights reserved.

Programming in C and Data Structures [15PCD13/23] 1. PROGRAMMING IN C AND DATA STRUCTURES [As per Choice Based Credit System (CBCS) scheme]

CprE 288 Introduction to Embedded Systems Exam 1 Review. 1

12/22/11. Java How to Program, 9/e. Help you get started with Eclipse and NetBeans integrated development environments.

Expressions and Data Types CSC 121 Fall 2015 Howard Rosenthal

ISA 563 : Fundamentals of Systems Programming

Creating a C++ Program

C OVERVIEW. C Overview. Goals speed portability allow access to features of the architecture speed

Basics of Programming

Basic C Programming (2) Bin Li Assistant Professor Dept. of Electrical, Computer and Biomedical Engineering University of Rhode Island

Applied Programming and Computer Science, DD2325/appcs15 PODF, Programmering och datalogi för fysiker, DA7011

Fundamental of Programming (C)

Laboratory 2: Programming Basics and Variables. Lecture notes: 1. A quick review of hello_comment.c 2. Some useful information

Unit 3. Operators. School of Science and Technology INTRODUCTION

CHAPTER 3 BASIC INSTRUCTION OF C++

Introduction. Following are the types of operators: Unary requires a single operand Binary requires two operands Ternary requires three operands

Review: Exam 1. Your First C++ Program. Declaration Statements. Tells the compiler. Examples of declaration statements

C Fundamentals & Formatted Input/Output. adopted from KNK C Programming : A Modern Approach

Full file at

Programming Fundamentals. With C++ Variable Declaration, Evaluation and Assignment 1

.. Cal Poly CPE 101: Fundamentals of Computer Science I Alexander Dekhtyar..

C OVERVIEW BASIC C PROGRAM STRUCTURE. C Overview. Basic C Program Structure

Unit-II Programming and Problem Solving (BE1/4 CSE-2)

ET156 Introduction to C Programming

C - Basic Introduction

Basics of Java Programming

BLM2031 Structured Programming. Zeyneb KURT

Introduction to Programming

UNIT - I. Introduction to C Programming. BY A. Vijay Bharath

INTRODUCTION 1 AND REVIEW

CS113: Lecture 3. Topics: Variables. Data types. Arithmetic and Bitwise Operators. Order of Evaluation

A flow chart is a graphical or symbolic representation of a process.

Introduction to C Programming

Transcription:

Borrowed from lecturer notes by Omid Jafarinezhad Fundamental of Programming (C) Lecturer: Vahid Khodabakhshi Lecture 3 Constants, Variables, Data Types, And Operations Department of Computer Engineering

Outline Interpreter vs. Compiler C Program Data types Variables Constants Operations Arithmetic Operators unary operators operators that require only one operand binary operators operators that require two operands Assignment Operators Equality and Relational Operators Logical Operators Bitwise Operators Conditional Operator Comma Operator sizeof Department of Computer Engineering 2/57

Interpreter vs. Compiler Department of Computer Engineering 3/57

C Program Constants and variables stdout (Screen) A B C D stderr (Screen) stdin (Keyboard) main X Y Z Instructions and operating procedures Operations and functions Department of Computer Engineering 4/57

Simple Program Examples: // int is return data type // main is entrance function int main() { } statement 1; statement 1; //. return 0; // Simplest c program int main() { return 0; } /* Objective: print on screen */ #include <stdio.h> // preprocessor statements have not ; int main() welcome to c!!! { printf("welcome to c!!!"); return 0; // indicate that program ended successfully } Department of Computer Engineering 5/57

Examples: Header file Main function Variables Input and output Process #include <stdio.h> // header file (preprocessor ) // calculating sum of two user input variables int main() { /* variable definition */ int a; int b; int result = 0; // get first variables form user printf("enter first number:\n"); scanf("%d", &a); // get scoend variables form user printf("enter scoend number:\n"); scanf("%d", &b); // sum of input variables result = a + b; printf("%d + %d = %d\n", a, b, result); system("pause"); return 0; } Department of Computer Engineering 6/57

#include <stdio.h> // (preprocessor ) Examples: Header file Constant Main function Variables Input and output Process #define PI 3.14 // PI constant (preprocessor ) // calculating area of circle int main() { /* variable definition */ float Radius; float Area = 0; // get radius of circle form user printf("enter Radius :\n"); scanf("%f", &Radius); // calculating area of circle Area = PI * Radius * Radius; printf( Area = %f", Area ); } system("pause"); return 0; Department of Computer Engineering 7/57

A Simple C Program: Printing a Line of Text Department of Computer Engineering 8/57

A Simple C Program: Printing a Line of Text (Cont.) Lines 1 and 2 /* Fig. 2.1: fig02_01.c A first program in C */ begin with /* and end with */ indicating that these two lines are a comment. C99 also includes the C++ language s // single-line comments in which everything from // to the end of the line is a comment. Department of Computer Engineering 9/57

A Simple C Program: Printing a Line of Text (Cont.) You insert comments to document programs and improve program readability. Comments do not cause the computer to perform any action when the program is run. Comments are ignored by the C compiler and do not cause any machine-language object code to be generated. Comments also help other people read and understand your program. Department of Computer Engineering 10/57

A Simple C Program: Printing a Line of Text (Cont.) Line 3 #include <stdio.h> Lines beginning with # are processed by the preprocessor before the program is compiled. Line 3 tells the preprocessor to include the contents of the standard input/output header (<stdio.h>) in the program. Department of Computer Engineering 11/57

A Simple C Program: Printing a Line of Text (Cont.) Line 6 int main( void ) Every program in C begins executing at the function main. The parentheses after main indicate that main is a program building block called a function. The keyword int to the left of main indicates that main returns an integer (whole number) value. The void in parentheses here means that main does not receive any information. A left brace, {, begins the body of every function (line 7). A corresponding right brace ends each function (line 11). This pair of braces and the portion of the program between the braces is called a block. Department of Computer Engineering 12/57

A Simple C Program: Printing a Line of Text (Cont.) Line 8 printf( "Welcome to C!\n" ); instructs the computer to perform an action, namely to print on the screen the string of characters marked by the quotation marks. A string is sometimes called a character string, a message or a literal. The entire line, including printf, its argument within the parentheses and the semicolon (;), is called a statement. Every statement must end with a semicolon (also known as the statement terminator). Department of Computer Engineering 13/57

A Simple C Program: Printing a Line of Text (Cont.) When encountering a backslash in a string, the compiler looks ahead at the next character and combines it with the backslash to form an escape sequence. The escape sequence \n means newline. Department of Computer Engineering 14/57

A Simple C Program: Printing a Line of Text (Cont.) Department of Computer Engineering 15/57

A Simple C Program: Printing a Line of Text (Cont.) Line 10 return 0; /* indicate that program ended successfully */ is included at the end of every main function. The keyword return is one of several means we ll use to exit a function. When the return statement is used at the end of main as shown here, the value 0 indicates that the program has terminated successfully. Department of Computer Engineering 16/57

Variables in computer A variable is a location in memory where a value can be stored for use by a program. Department of Computer Engineering 17/57

Variables Have the same meaning as variables in algebra Single alphabetic character Each variable needs an identifier that distinguishes it from the others a = 5 x = a + b valid identifier in C may be given representations containing multiple characters A-Z, a-z, 0-9, and _ (underscore character) First character must be a letter or underscore (no, _no 9no) Usually only the first 32 characters are significant There can be no embedded blanks (student no) Identifiers are case sensitive (area, Area, AREA, ArEa) Keywords cannot be used as identifiers Department of Computer Engineering 18/57

Reserved Words (Keywords) in C auto break int long case char register return const continue short signed default do sizeof static double else struct switch enum extern typedef union float for unsigned void goto if volatile while Department of Computer Engineering 19/57

Naming Conventions C programmers generally agree on the following conventions for identifier: Use meaningful identifiers Separate words within identifiers with: underscores capitalize each word Examples: surface_area (prefferd 1 ) Surface_Area surfacearea SurfaceArea 1- Details: http://ce.sharif.edu/courses/96-97/1/ce153-8/resources/root/tutorials/writing-readable-code.pdf Department of Computer Engineering 20/57

Variable declaration Before using a variable, you must declare it Data_Type Identifier; int width; // width of rectangle float area; // result of calculating area stored in it char separator; // word separator Data_Type Identifier = Initial_Value; int width = 10; // width of rectangle float area = 255; // result of calculating area stored in it char seperator =, ; // word separator Data_Type Identifier, Identifier, Identifier,.; int width, length, temporary; float radius, area = 0; Department of Computer Engineering 21/57

Variable declaration When we declare a variable Space is set aside in memory to hold a value of the specified data type That space is associated with the variable name That space is associated with a unique address Visualization of the declaration int width = 95; // get width form user // &width is 22ff40 // *&width is 95 // sizeof width is 4 & * address data 22ff40 95 22ff44 Department of Computer Engineering 22/57

Data types Minimal set of basic data types primitive data types int float double char Void The size and range of these data types may vary among processor types and compilers In code blocks: int 4 byte float 4 byte char 1 byte double 8 byte Department of Computer Engineering 23/57

Write a program that show size of data type in code blocks. Department of Computer Engineering 24/57

Data type qualifiers Modify the behavior of data type to which they are applied: Size qualifiers: alter the size of the basic data types: short: multiply by 0.5 long: multiply by 2 short can be applied to: int long can be applied to: int and double Sign qualifiers: can hold both positive and negative numbers, or only positive numbers.: signed: + and - unsigned: + they can be applied to : int and char Department of Computer Engineering 25/57

Data type size and range Data type Qualifier Example Size (byte) Range char signed unsigned signed char c; unsigned char c; char c; 8 8 8-128.. 127 0.. 255-128.. 127 int signed unsigned short long signed short i; signed short int i; unsigned int i; int i; signed int i; short i; short int i; long i; long int i; signed long i; signed long int i; long long i; long long int i; signed long long i; signed long long int i; 16 16 16 or 32 16 or 32 16 or 32 16 16 32 32 32 32 64 64 64 64 signed (16): -32768.. 32767 unsigned (16): 0.. 65535 signed (32): -2147483648.. 2147483647 unsigned (32): 0.. 4294967295 float float f; 64 +/- 3.4e +/- 38 (~7 digits) double long double d; long double d; 64 80 +/- 1.7e +/- 308 (~15 digits) Department of Computer Engineering 26/57

Overflow and Underflow /* The # character indicate a pre-processor directive; it's an instruction to the compiler to make it do something The <> character tell C to look in the system area for the file stdio.h. If I had given the name #include "stdio.h" instead it would tell the compiler to look in the current directory /* #include <stdio.h> /* * Function main begins program execution * Semi-colon is statement terminator, so it is as a signal to the compiler for end of line */ int main() { /* The 2 curly brackets { }, are used to specify the limits of the program block */ char letter = 'A'; // char variable to show ASCII code short shortvariable = 32769; // short variable for test overflow } // printf command display string on the monitor printf("current value of shortvariable is = %d\n", shortvariable); printf("current value of letter is = %d", letter); printf("current value of letter is = %c", letter); system("pause"); // pause the execution to show press any key return 0; // indicate that program ended successfully current value of shortvariable is = -32767 current value of letter is = 65 current value of letter is = A Department of Computer Engineering 27/57

Program Error Compile-time or syntax is caused when the compiler cannot recognize a statement Run-time E.g. division by zero Logical E.g. Overflow and Underflow Department of Computer Engineering 28/57

Examples: Header file Constant Main function Variables Input and output Process #include <stdio.h> // (preprocessor ) #define PI 3.14 // PI constant (preprocessor ) // calculating area of circle int main() { /* variable definition */ float Radius; float Area = 0; // get radius of circle form user printf("enter Radius :\n"); scanf("%f", &float ); // calculating area of circle Area = PI * Radius * Radius; printf( Area = %f", Area ); } system("pause"); return 0; Department of Computer Engineering 29/57

Integer constant value Base 10: 1 915 +8-90 Base 8: 074 0123 084 Base 16: 0x1 0X5 0x7fab unsigned: 5000u 4U long: 123456789l 56L unsigned long: 536489ul long long : 5361254865LL 25lL Example : 0xABu 0123uL 017LL Department of Computer Engineering 30/57

floating-point constant value A floating-point value contains a decimal point 33.5 0.0-657.983.2 6. For example, the value 150.4582 is represented in scientific notation as 1.504582 X 10 2 and is represented in exponential notation (by the computer) as 1.504582E+02 This notation indicates that 1.504582 is multiplied by 10 raised to the second power (E+02) The E stands for exponent Department of Computer Engineering 31/57

Char and string constant value Char char c; c = 'A'; // d = 65; String printf("string is array of char!!!"); printf("example of escape sequence is \n"); Department of Computer Engineering 32/57

Constant Constants provide a way to define a variable which cannot be modified by any other part in the code #define: const: #define Identifier without memory consume memory consume constant_value #define PI 3.14 #define ERROR "Disk error " #define ERROR "multiline \ message" #define ONE 1 #define TWO ONE + ONE Department of Computer Engineering 33/57

Constant const [Data_Type] Identifier = constant_value; const p = 3; // const int p = 3; const p; p = 3.14; const p = 3.14; const float p = 3.14; // compile error // p = 3 because default is int Department of Computer Engineering 34/57

#include <stdio.h> // (preprocessor ) Examples: Header file Constant Main function Variables Input and output Process #define PI 3.14 // PI constant (preprocessor ) // calculating area of circle int main() { /* variable definition */ float Radius; float Area = 0; // get radius of circle form user printf("enter Radius :\n"); scanf("%f", &float ); // calculating area of circle Area = PI * Radius * Radius; printf( Area = %f", Area ); } system("pause"); return 0; Department of Computer Engineering 35/57

Operators Arithmetic Operators unary operators operators that require only one operand binary operators operators that require two operands Assignment Operators Equality and Relational Operators Logical Operators Bitwise Operators Conditional Operator Comma Operator sizeof Operator Width * High Operand Department of Computer Engineering 36/57

Arithmetic Operators Unary Operator C operation Operator Expression Explanation Positive + a += 3; Equivalent to a = a + 3 Negative - b -= 4; Equivalent to b = b - 4 Increment ++ i++; Equivalent to i = i + 1 Decrement - - i - -; Equivalent to i = i - 1 Department of Computer Engineering 37/57

PRE / POST Increment Consider this example: int width = 9; printf("%d\n", width++); printf("%d\n", width); But if we have: int width = 9; printf("%d\n", ++width); printf("%d\n", width); int width = 9; printf("%d\n", width); width++; printf("%d\n", width); int width = 9; width++; printf("%d\n", width); printf("%d\n", width); 9 10 10 10 Department of Computer Engineering 38/57

PRE / POST Increment int R = 10; int count = 10; ++ Or -- Statement Equivalent Statements R count R = count; R = count++; count = count + 1; 10 11 count = count + 1; R = ++count; R = count; 11 11 R = count; R = count--; count = count 1; 10 9 count = count 1; R = --count; R = count; 9 9 Department of Computer Engineering 39/57

Arithmetic Operators Binary Operators C operation Operator Expression Addition + b = a + 3; Subtraction - b = a 4; Multiplication * b = a * 3; Division / b = a / c; Modulus (integer) % b = a % c; Department of Computer Engineering 40/57

Division The division of variables of type integer will always produce a variable of type integer as the result Since b is declared as an integer, the result of a/2 is 3, not 3.5 Example int a = 7, b; float z; b = 3, z = 3.500000 b = a / 2; z = a / 2.0; printf("b = %d, z = %f\n", b, z); Department of Computer Engineering 41/57

Modulus You could only use modulus (%) operation on integer variables (int, long, char) z = a % 2.0; // error z = a % 0; // error Example int a = 7, b, c; b = a % 2; c = a / 2; printf("b = %d\n", b); printf("c = %d\n", c); Modulus will result in the remainder of a/2. 7 2 - a/2 6 3 1 a%2 remainder integral Department of Computer Engineering 42/57

Assignment Operators lvalue = rvalue; int i; float f; i = 2; // *&i = 2; 2 = i; // error: invalid lvalue in assignment f = 5.6; i = f; // i = 5; i = -5.9; // i = -5; Department of Computer Engineering 43/57

Assignment Operators Assignment operators are used to combine the '=' operator with one of the binary arithmetic or bitwise operators. Operator Expression Equivalent Statement Results += c += 7; c = c + 7; c = 16 -= c -= 8; c = c 8; c = 1 *= c *= 10; c = c * 10; c = 90 /= c /= 5; c = c / 5; c = 1 %= c %= 5; c = c % 5; c = 4 &= c &= 2 ; c = c & 2; c = 0 ^= c ^= 2; c = c ^ 2; c = 11 = c = 2; c = c 2; c = 11 <<= c <<= 2; c = c << 2; c = 36 >>= c >>= 2; c = c >> 2; c = 2 Department of Computer Engineering 44/57

Precedence Rules The rules specify which of the operators will be evaluated first For example: x = 3 * a - ++b%3; c = b = d = 5; Precedence Operator Associativity Level 1 (highest) () left to right 2 unary right to left 3 * / % left to right 4 + - left to right 5 (lowest) = += -= *= /= %= right to left Department of Computer Engineering 45/57

Precedence Rules how would this statement be evaluated? x = 3 * a - ++b % 3; What is the value for x, for: a = 2, b = 4? x = 3 * a - ++b % 3; x = 3 * a - 5 % 3; x = 3 * a - 5 % 3; x = 6-5 % 3; x = 6 2; x = 4; Department of Computer Engineering 46/57

Precedence Rules If we intend to have a statement evaluated differently from the way specified by the precedence rules, we need to specify it using parentheses ( ) x = 3 * a - ++b % 3; Consider having the following statement: x = 3 * ((a - ++b)%3); the expression inside a parentheses will be evaluated first The inner parentheses will be evaluated earlier compared to the outer parentheses Department of Computer Engineering 47/57

Precedence Rules how would this statement be evaluated? x = 3 * ((a - ++b)%3); What is the value for X, for: a = 2, b = 4? x = 3 * ((a - ++b) % 3); x = 3 * ((a - 5) % 3); x = 3 * ((-3) % 3); x = 3 * 0; x = 0; Department of Computer Engineering 48/57

Precedence Rules how would this statement be evaluated? x = 3 * ++a b--%3; What is the value for X, for: a = 2, b = 4? x = 3 * ++a b-- % 3; x = 3 * ++a b-- % 3; x = 3 * ++a 4 % 3; x = 3 * 3 4 % 3; x = 9 1; x = 8; b = b -1, b = 3; Department of Computer Engineering 49/57

Equality and Relational Operators Equality Operators: Relational Operators: Operator Example Meaning == x == y x is equal to y!= x!= y x is not equal to y Operator Example Meaning > x > y x is greater than y < x < y x is less than y >= x >= y x is greater than or equal to y <= x <= y x is less than or equal to y Department of Computer Engineering 50/57

Logical Operators Logical operators are useful when we want to test multiple conditions AND OR NOT C has not bool data type, but: 0: evaluate to false If(0) printf(" "); other: evaluate to true If(1) printf(" "); If(-13) printf(" "); Department of Computer Engineering 51/57

&& - Logical AND All the conditions must be true for the whole expression to be true Example: if (a == 1 && b == 2 && c == 3) means that the if statement is only true when a == 1 and b == 2 and c == 3 If (a = 5) e1 e2 Result = e1 && e2 0 0 0 0 1 0 1 0 0 1 1 1 Department of Computer Engineering 52/57 e1 e2 Result = e1 && e2 false false false false true false true false false true true true

- Logical OR The truth of one condition is enough to make the whole expression true Example: if (a == 1 b == 2 c == 3) means the if statement is true when either one of a, b or c has the right value e1 e2 Result = e1 e2 0 0 0 0 1 1 1 0 1 1 1 1 Department of Computer Engineering 53/57 e1 e2 Result = e1 e2 false false false false true true true false true true true true

! - Logical NOT Reverse the meaning of a condition Example: if (!(radius > 90)) Means if radius not bigger than 90. e1 Result =!e1 0 1 0 1 1 0 1 0 e1 Result =!e1 false true false true true false true false Department of Computer Engineering 54/57

Bitwise Operators Apply to all kinds of int and char types: signed and unsigned char, short, int, long, long long Operator Name Description & AND Result is 1 if both operand bits are 1 OR Result is 1 if either operand bit is 1 ^ XOR Result is 1 if operand bits are different ~ Not (Ones Complement) Each bit is reversed << Left Shift Multiply by 2 >> Right Shift Divide by 2 Department of Computer Engineering 55/57

Bitwise Operators Applicable for low level programming, e.g.: Port manipulation I/O programming Usually: & ^ set OFF one bit set ON one bit reverse one bit Department of Computer Engineering 56/57

XOR e1 e2 Result = e1 ^ e2 0 0 0 0 1 1 1 0 1 1 1 0 Department of Computer Engineering 57/57

Examples A = 199; B = 90; c = a & b = 66; c = a b = 233; c = a ^ b = 157; c = ~a = 56 c = a << 2 = 28; c = a >> 3 = 24; Department of Computer Engineering 58/57 1 1 0 0 0 1 1 1 0 1 0 1 1 0 1 0 0 1 0 0 0 0 1 0 1 1 0 1 1 1 1 1 1 0 0 1 1 1 0 1 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0

Conditional Operator The conditional operator (?:) is used to simplify an if/else statement Condition? Expression1 : Expression2; The statement above is equivalent to: if (Condition) Expression1; else Expression2; Which are more readable? Department of Computer Engineering 59/57

Conditional Operator Example: if/else statement: if (total > 12) grade = P ; else grade = F ; conditional statement: (total > 12)? grade = P : grade = F ; OR grade =( total > 12)? P : F ; Department of Computer Engineering 60/57

Conditional Operator Example: if/else statement: if (total > 12) printf( Passed!!\n ); else printf( Failed!!\n ); Conditional Statement: printf( %s!!\n, total > 12? Passed : Failed ); Department of Computer Engineering 61/57

Comma Operator (Expression1,Expression2, ); Example: int x, y, z; z = (x = 2, y = x + 1); printf("z = %d", z); int x, y, z; x = 2; y = x + 1; z = y; printf("z = %d", z); Department of Computer Engineering 62/57

sizeof The sizeof keyword returns the number of bytes of the given expression or type returns an unsigned integer result sizeof variable_identifier; sizeof (variable_identifier); sizeof (Data_Taype); Example: int x; printf("size of x = %d", sizeof x); printf("size of long long = %d", sizeof(long long)); printf("size of x = %d", sizeof (x)); Department of Computer Engineering 63/57

Type Casting Explicit Type cast: carried out by programmer using casting int k, i = 7; float f = 10.14; char c = 'B'; k = (i + f) % 3; // error k = (int)(i + f) % 3; Implicit Type cast: carried out by compiler automatically f = 65.6; i = f; // f = (int)f; c = i; // c = (int)i; Department of Computer Engineering 64/57

Type Casting char c = 'A'; short s = 1; int i; float f; double d; d = (c / i) + (f * d) + (f + i); (char) (int) (float) (double) (float) (int) int double float double i = (c + s); (int) (char) (short) double (short) (int) Department of Computer Engineering 65/57

Precedence Rules Primary Expression Operators () []. -> left-to-right Unary Operators * & + -! ~ ++expr --expr (typecast) sizeof right-to-left * / % + - >> << < > <= >= Binary Operators ==!= & left-to-right ^ && Ternary Operator?: right-to-left Assignment Operators = += -= *= /= %= >>= <<= &= ^= = right-to-left Post increment expr++ expr-- - Comma, left-to-right Department of Computer Engineering 66/57

Good Programming Practices Place each variable declaration on its own line with a descriptive comment Place a comment before each logical chunk of code describing what it does Do not place a comment on the same line as code with the exception of variable declarations Use spaces around all arithmetic and assignment operators Use blank lines to enhance readability Department of Computer Engineering 67/57

Good Programming Practices AVOID: variable names starting with an underscore often used by the operating system and easy to miss Place a blank line between the last variable declaration and the first executable statement of the program Indent the body of the program Use all uppercase for symbolic constants (used in #define preprocessor directives) Examples: #define PI 3.14159 #define AGE 52 Department of Computer Engineering 68/57