It's time to discover how operations work in C.
Arithmetic operators
Operators | Job |
+ | Adds two values |
- | Subtracts two values |
* | Multiplies two values |
/ | Divides two values |
% | Remainder of a division between two values |
Examples
double mul(float a, float b) {
return a * b;
}
#include <math.h>
double pythagore(float a, float b) {
return sqrt(a * a + b * b);
}
#include <stdio.h>
#include <assert.h>
int main(void) {
assert((float) 5 / 2 == 2.5);
assert(5 % 2 == 1);
return 0;
}
Boolean operators
Operators | Job |
== | Are both values equal ? |
!= | Are both values different ? |
< | Is the first value less than the second one ? |
> | Is the first value greater than the second one ? |
>= | Is the first value less or equal than the second one ? |
<= | Is the first value greater than the second one ? |
! | Reverse a boolean expression |
Examples
#include <math.h>
double pythagore(float a, float b) {
return sqrt(a * a + b * b);
}
int main(void) {
assert(pythagore(3, 4) == 5);
return 0;
}
#include <assert.h>
int main(void) {
assert(5 >= 2);
assert(23 >= 23);
assert(1 <= 10);
assert(9 == 9);
assert(5 != 2);
assert(!(5 <= 2));
return 0;
}
Arithmetic operators for variables
Operators | Job (when it assigns it does to the variable) |
+= | Adds a value to the variable |
-= | Subtracts a value from the variable |
*= | Multiplies the variable's value by a value and assign the result |
/= | Divides the variable's value by a value and assign the result |
%= | Assigns the remainder of a division between the variable's value and a value |
++ | Increments the variable by one |
-- | Decrements the variable by one |
a = a + 2;
a += 2;
Both expressions are the same
Examples
#include <assert.h>
int main(void) {
int a = 10;
a += 1;
assert(a == 11);
a++;
assert(a == 12);
++a;
assert(a == 13);
--a;
assert(a == 12);
return 0;
}
#include <assert.h>
int main(void) {
int a = 10;
a *= 2;
assert(a == 20);
return 0;
}
Difference between ++x
and x++
The only difference between the prefix and the postfix notation is the returned value of the expression.
With the postfix notation, the variable's value is returned then the variable is incremented.
With the prefix notation, the variable is incremented then the the varibale's value is returned
int postfix = 5;
assert(postfix++ == 5);
assert(postfix == 6);
int prefix = 5;
assert(++prefix == 6);
assert(prefix == 6);