Intro to C
Structure of a ‘C’ program
pre-processor directives
global declarations
function prototypes
main()
{
local variables to function main ;
statements associated with function main ;}
f1()
{
local variables to function 1 ;
statements associated with function 1 ;}
f2()
{
local variables to function f2 ;
statements associated with function 2 ;}
Case Sensitive
• Case matters in C.
A is not a
Structure of my first ‘C’ program
/* This is
a comment */
// This is a one-line comment
# include <stdio.h> /* includes header files */
main() /* Must have a main function. First function executed */
{
printf ("Hello World!"); /* stdio functions */
}
Nice to have
• Add plenty of comments (/* */ or //)
• Good layout, not:main(){printf("Hello World\n");}
• Use meaningful variable names
• Initialize your variables
• Use parentheses to avoid confusion:a=(10.0 + 2.0) * (5.0 - 6.0) / 2.0
Common variable types
• int - stores integers (-32767 to +32768)
• unsigned int – 0 to 65535
• char – holds 1 byte of data (-127 to 128)
• unsigned char – holds 1 byte (0 to +255)
• long – usually double int (signed)
• unsigned long – positive double int
• float – floating point variable
• double – twice of a floating point variable
• Note: local, global and static variables
printf
• printf (“%d”,i);
Usual variable type Display
%c char single character
%d (%i) int signed integer
%e (%E) float or double exponential format
%f float or double signed decimal
%g (%G) float or double use %f or %e as required
%o int unsigned octal value
%p pointer address stored in pointer
%s array of char sequence of characters
%u int unsigned decimal
%x (%X) int unsigned hex value
Operators
+ addition
- subtraction
* multiplication
/ division
% mod or remainder (e.g., 2%3 is 2), also called 'modulo'
<< left-shift (e.g., i<<j is i shifted to the left by j bits)
>> right-shift
& bitwise AND
| bitwise OR
^ bitwise exclusive-OR
&& logical AND (returns 1 if both operands are non-zero; else 0)
|| logical OR (returns 1 if either operand is non-zero; else 0)
< less than (e.g., i<j returns 1 if i is less than j)
> greater than
<= less than or equal
>= greater than or equal
== equals
!= does not equal
Operators (contd.)
Increment and Decrement Operators
• ++ Increment operator
• -- Decrement Operator
• k++ or k-- (Post-increment/decrement)k = 5;
x = k++; // sets x to 5, then increments k to 6
• ++k or --k (Pre-increment/decrement)k = 5;
x = ++k; // increments k to 6 and then sets x to the
// resulting value, i.e., to 6
Functions and Prototypes
• Building blocks of code
• Group relevant and repetitive actions into functions
• Variables are usually local (they exist only inside the function)
type FunctionName(type declared parameter list)
{
statements that make up the function
}
Example function#include <stdio.h>
int add1(int);
void main()
{
int x;
x=5;
x=add1(x);
printf("%d“,x);
}
int add1(int i)
{
int y;
y=i+1;
return (y);
}
Returns an integer result
Expects an integer parameter
Bitwise Operators
<< left shift
>> right shift
| bitwise OR
& bitwise AND
^ bitwise XOR
~ bitwise NOT
Bitwise operators (contd.)
AND: z = x & y
1
1
1
y 0 0 1
0 0
00
0
1
z
x
OR: z = x | y
1
1
1
y 0 0 1
0 1
00
1
1
z
x
NOT: z = ~x
1
0
0
1
z
x
XOR: z = x ^ y
0
1
1
y 0 0 1
0 1
00
1
1
z
x
Shift operatorsRight shift by 5 unsigned
Right shift by 5 signed
Conditional clauses
if (expression) statement
else statement
if (x==1)
{
printf(“Hello”);
printf (“hi\n”);
}
else
{
printf(“World’);
}
Conditional Loops
while (expression) statement
while (x<1000) x++;
while (x<1000)
{
x++;
y=y+10;
}
Conditional Loops
do statement while (expression)
x = 0;
do
{
x++;
} while (x<1000);
Unconditional Loops
for( initialization; expression; increment )
statement
for (i=0;i<100;i++)
{
printf("Hi.");
}
The switch statement
The C switch allows multiple choice of a selection of items at one level of a conditional where it is a far neater way of writing multiple if statements
switch (expression)
{ case item1:
statement1;
break;
case item2:
statement2;
break;
case itemn:
statementn;
break;
default:
statement;
break;
}
Arrays
• Declaration:
int x[10];
double y[15];
x[5]=10;
char c[15];
• Note arrays start with 0 element
Pointers
• A pointer in C is the address of something
• The unary operator `&' is used to produce the address of an object
int a, *b, c; // b is a pointer
b = &a; // Store in b the address of a
c = *b; // Store in c the value at
// address b (i.e., a)
• Pointers to pointers
• Pointers to functions
Character Pointers & Arrays
char *y;
char x[100];
y = &x[0];
y = x; // Does the same as the line above
*(y+1) gives x[1]
*(y+i) gives x[i]
Structures
• User defined ‘data type’
struct emprec
{
char name[25];
int age;
int pay;
};
struct emprec employee;
employee.age=32;