Basics of C
1
The C Language
2
C History
3
Hello World in C
4
#include <stdio.h>
int main()
{
printf(“Hello, world!\n”);
}
Hello World in C
5
#include <stdio.h>
int main()
{
printf(“Hello, world!\n”);
}
Program mostly a collection of functions
“main” function special: the entry point
“int” qualifier indicates function returns an integer
I/O performed by a library function: not included in the language
6
Name | Description | Size* | Range* |
char | Character or small integer | 1 byte | signed: -128 to 127�unsigned: 0 to 255 |
short int (short) | Short integer | 2 bytes | signed: -32768 to 32767�unsigned: 0 to 65535 |
int | Integer | 4 bytes | signed: -2147483648 to 2147483647�unsigned: 0 to 4294967295 |
long int (long) | Long integer | 4 bytes | signed: -2147483648 to 2147483647�unsigned: 0 to 4294967295 |
float | Floating point number | 4 bytes | 3.4e +/- 38 (7 digits) |
double | Double precision floating point number | 8 bytes | 1.7e +/- 308 (15 digits) |
long double | Long double precision floating point number | 8 bytes | 1.7e +/- 308 (15 digits) |
Data types
Variable types
7
Local variables are declared within the body of a function, and can only be used within that function.
Another class of local variable is the static type. It is specified by the keyword static in the variable declaration.
The most striking difference from a non-static local variable is, a static variable is not destroyed on exit from the function.
A global variable declaration looks normal, but is located outside any of the program's functions. So it is accessible to all functions.
Variables
8
int myVariable;
myVariable = 5;
myVariable
5
9
An example
int global = 10; //global variable
int func (int x)
{
static int stat_var; //static local variable
int temp; //(normal) local variable
int name[50]; //(normal) local variable
……
}
Variables
10
41
5.74532370373175
× 10-14
0
15
Data Memory (RAM)
int warp_factor;
float length;
char first_letter;
‘A’
Variables
11
char first_letter;
int warp_factor;
float length;
41
5.74532370373175
× 10-14
0
15
Data Memory (RAM)
‘A’
Variables
…and a data type
Determines size and how values are interpreted
12
char first_letter;
float length;
int warp_factor;
41
5.74532370373175
× 10-44
0
15
Data Memory (RAM)
‘A’
Identifiers
13
I
d
e
n
t
i
f
i
e
r
First Character
‘_’ (underscore)
‘A’ to ‘Z’
‘a’ to ‘z’
Remaining Characters
‘_’ (underscore)
‘A’ to ‘Z’
‘a’ to ‘z’
‘0’ to ‘9’
How to Declare a Variable?
14
Syntax
type identifier1, identifier2,…,identifiern;
Examples
int x, y, z;
float warpFactor;
char text_buffer;
unsigned index;
Variables
�How to Declare a Variable?
Variables may be declared in a few ways:
15
Syntax
type identifier;
type identifier = InitialValue;
type identifier1, identifier2, identifier3;
type identifier1 = Value1, identifier2 = Value2;
One declaration on a line
One declaration on a line with an initial value
Multiple declarations of the same type on a line
Multiple declarations of the same type on a line with initial values
Variables
�How to Declare a Variable
16
Examples
int x;
int y = 12;
int a, b, c;
long int myVar = 0x12345678;
long z;
char first = 'a', second, third = 'c';
float big_number = 6.02e+23;
Variables
A Simple C Program
17
#include <stdio.h>
int main(void)
{
float radius, area, PI;
//Calculate area of circle
radius = 12.0;
PI = 3.1416;
area = PI * radius * radius;
printf("Area = %f", area);
}
Header File
Function
Variable Declarations
Comment
Preprocessor Directives
Variables and Data Types
18
Variable
Declarations
Data Types
Variables in use
#include <stdio.h>
int main(void)
{
float radius, area, PI;
//Calculate area of circle
PI = 3.1416;
radius = 12.0;
area = PI * radius * radius;
printf("Area = %f", area);
}
A Simple C Program
printf()
19
The printf() function can be instructed to print integers, floats and string properly.
printf( “format”, variables);
int stud_id = 5200;
char name[20] = “Mike”; // array discussed in LO4
printf(“%s ‘s ID is %d \n”, name, stud_id);
printf()
20
%d decimal integers
%x hex integer
%c character
%f float number
%lf double number
%s string
%p pointer
%e decimal exponent
printf(“The student id is %5d \n”, stud_id);
The value of stud_id will occupy 5 characters space in the print-out.
21
It introduces a new line on the terminal screen.
\a | alert (bell) character | \\ | backslash |
\b | backspace | \? | question mark |
\f | formfeed | \’ | single quote |
\n | newline | \” | double quote |
| | | |
\t | horizontal tab | | |
\v | vertical tab | | |
escape sequence
printf()
22
scanf()
23
Description:
The C library function
int scanf(const char *format, ...) reads formatted input from keyboard. The function returns how many values where read. If scanf returns a 0 it means nothing was read.
Declaration:
Following is the declaration for scanf() function.
int scanf(const char *format, ...)
Example:
int a, result;
result = scanf("%d", &a);
scanf()
24
Example: The following example shows the usage of scanf() function to read strings.
Note: in scanf, we do not use & with array names
#include <stdio.h>
int main()
{
char str1[20], str2[30];
printf("Enter name: ");
scanf("%s", str1);
printf("Enter your website name: ");
scanf("%s", str2);
printf("Entered Name: %s\n", str1);
printf("Entered Website:%s", str2);
}
Enter name: admin
Enter your website name: www.tutorialspoint.com
Entered Name: admin
Entered Website: www.tutorialspoint.com
scanf()
25
What happens in this program? An integer called pin is defined. A prompt to enter in a number is then printed with the first printf statement. The scanf routine, which accepts the response, has a control string and an address list.
In the control string, the format specifier %d shows what data type is expected.
The &pin argument specifies the memory location of the variable the input will be placed in. After the scanf routine completes, the variable pin will be initialized with the input integer. This is confirmed with the second printf statement. The & character has a very special meaning in C. It is the address operator.
Is a function in C which allows the programmer to accept input from a keyboard. The following program illustrates the use of this function.
#include <stdio.h>
main() {
int pin;
printf("Please type in your PIN\n");
scanf("%d",&pin);
printf("Your access code is %d\n",pin);
}
26
Negative
- (unary)
Subtraction
-
Positive
+ (unary)
Modulo
%
Addition
+
NOTE - An int divided by an int returns an int:
10/3 = 3
Use modulo to get the remainder:
10%3 = 1
Multiplication
*
Division
/
Operator
Result
Operation
Example
-x
x - y
+x
x % y
x + y
x * y
x / y
Negative value of x
Difference of x and y
Value of x
Remainder of x divided by y
Sum of x and y
Product of x and y
Quotient of x and y
Arithmetic Operations
Arithmetic Assignment Operators
27
28
Operator
Result (FALSE = 0, TRUE ≠ 0)
Operation
Example
Equal to
==
Not equal to
!=
Greater than
>
Greater than or equal to
>=
Less than
<
Less than or
equal to
<=
x == y
x != y
x > y
x >= y
x < y
x <= y
True if x equal to y, else false
True if x not equal to y, else false
True if x greater than y, else
false
True if x greater than or equal to y, else false
True if x less than y, else false
True if x less than or equal to y, else false
Relational Operations
Increment and Decrement Operators
29
awkward | easy | easiest |
x = x+1; | x += 1 | x++ |
x = x-1; | x -= 1 | x-- |
Example
30
int i = 10;
int j = 15;
int add = i + j; //25
int diff = j – i; //5
int product = i * j; // 150
int quotient = j / i; // 1
int residual = j % i; // 5
i++; //Increase by 1
i--; //Decrease by 1
Example
31
int i = 10;
int j = 15;
float k = 15.0;
j / i = ?
j % i = ?
k / i = ?
k % i = ?
j / i = 1;
j % i = 5;
k / i = 1.5;
k % i It is illegal.
Note: For %, the operands can only be integers.
Logical Operations
32
In C, there is no specific data type to represent “true” and “false”. C uses value “0” to represent “false”, and uses non-zero value to stand for “true”.
A && B => A and B
A || B => A or B
A == B => Is A equal to B?
A != B => Is A not equal to B?
Logical Operations
33
A > B => Is A greater than B?
A >= B => Is A greater than or equal to B?
A < B => Is A less than B?
A <= B => Is A less than or equal to B?
&& and || have different meanings from & and |.
& and | are bitwise operators.
No operator for exponent in C
34
OPERATOR PRECEDENCE
35
Precedence and Associativity of C Operators | ||
Symbol | Type of Operation | Associativity |
[ ] ( ) . –> postfix ++ and postfix –– | Expression | Left to right |
prefix ++ and prefix –– sizeof & * + – ~ ! | Unary | Right to left |
typecasts | Unary | Right to left |
* / % | Multiplicative | Left to right |
+ – | Additive | Left to right |
<< >> | Bitwise shift | Left to right |
< > <= >= | Relational | Left to right |
== != | Equality | Left to right |
& | Bitwise-AND | Left to right |
^ | Bitwise-exclusive-OR | Left to right |
| | Bitwise-inclusive-OR | Left to right |
&& | Logical-AND | Left to right |
|| | Logical-OR | Left to right |
? : | Conditional-expression | Right to left |
= *= /= %= += –= <<= >>= &= ^= |= | Simple and compound assignment | Right to left |
, | Sequential evaluation | Left to right |
36
Some practices
Compute the value of the following logical expressions?
int i = 10; int j = 15; int k = 15; int m = 0;
if( i < j && j < k) =>
if( i != j || k < j) =>
if( j<= k || i > k) =>
if( j == k && m) =>
if(i) =>
if(m || j && i ) =>
Answers
37
int i = 10; int j = 15; int k = 15; int m = 0;
if( i < j && j < k) => false
if( i != j || k < j) => true
if( j<= k || i > k) => true
if( j == k && m) => false
if(i) => true
if(m || j && i ) => true