C - Variables, if, else, while
Tags: c, programming, devops, linux
Published: 2022-09-14 11:25:03

We have seen in the past blog about c compilation process, gcc compiler and some basic c language syntax.

Now we are going to see more on variables, if statement, arithmetic operation and while statement.

---

## # Keywords and identifiers

**keywords**: are predefined function names that has a specific purpose and they cannot be used as identifiers in the program.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0lchq6yhbp738sn0h3k5.png)

**Identifiers**: c identifiers are names used to refer to a number of things like variable and functions.

Identifiers must start with an alphabetic character.

If you want to be sure that your programs are portable in the new c standard, identifiers need to have a characters limit if 31.

---

## # Arithmetic Operators
 
Are used to used to perform mathematical operations on the given expressions.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5wgbehx0hr99oolx2qk0.png)

```
#include <stdio.h>

/**
 * main - Entry point
 * 
 * Description: print result of arithmetic operator
 * 
 * Return: Always 0 (Success)
 */

int main(void)
{
     int a = 5;
     int b = 15;
     int c;

     c = a + b;
     printf("a + b = %d", c);
     c = a % b;
     printf("a % b = %d", c);

     return (0);
}
```

---

## # relational operators

Are used to perform comparisons on two variable.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u04pkgtrg196acotlroa.png)

```
#include <stdio.h>

/**
 * main - Entry point
 * 
 * Description: print result of arithmetic operator
 * 
 * Return: Always 0 (Success)
 */

int main(void)
{
     int a = 5;
     int b = 15;
     
     if ( a >= b )
     {
           printf("a is greater than or equal to b");
      }

      return (0);
}
```
 

---

## # logical operators

Are used to perform logical operations on the given expressions and there are 3 types of logical operator in c, like logical AND (&&), logical OR (||) and logical NOT (!).


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9bsv8253pxnblqprycmx.png)

```
#include <stdio.h>

/**
 * main - Entry point
 * 
 * Description: print result of arithmetic operator
 * 
 * Return: Always 0 (Success)
 */

int main(void)
{
     int a = 5;
     int b = 15;
     
     if ( a >= b && a = b)
     {
           printf("both statement's are true");
      }

      return (0);
}
     
```

---

## # Bitwise Operators

Are used to perform bit-level operations in C programming.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/43o8gatgbgutr6fwle17.png)


First you need to revise on how to turn binary into decimal and turn the decimal to binary.

**Binary to decimal**
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jwlnkchze0hl51pilj1v.png) 
**Decimal to binary**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8sjznkfk0szrrz398xfu.png)

**Bitwise AND Operator &**

works like the and logical operator the only case we get true is if 2 values are both true.

```
#include <stdio.h>

/**
 * main - Entry point
 * 
 * Description: Bitwise AND Operator
 * 
 * Return: Always 0 (Success)
 */

int main(void)
{
      int a = 8;
      int b = 21;

      printf("a & b = %d",a&b);

      return (0);
} 
```

8  =  00001000 (Binary)
21 =  00010101 (Binary)

Bitwise Operation of 8  and 21

 00001000
&00010101
00000000 = 0 (Decimal)

**Bitwise OR Operator |**

works like the or logical operator the only case we get false is if both values are false.
```
#include <stdio.h>

/**
 * main - Entry point
 * 
 * Description: Bitwise OR Operator
 * 
 * Return: Always 0 (Success)
 */

int main(void)
{
      int a = 8;
      int b = 21;

      printf("a | b = %d",a|b);

      return (0);
} 
```
8  =  00001000 (Binary)
21 =  00010101 (Binary)

Bitwise Operation of 8  and 21

00001000
|00010101
00011101 = 29 (Decimal)

**Bitwise XOR (exclusive OR) Operator ^**  

The output is 1(true) if the corresponding bits of two operands are opposite.

```
#include <stdio.h>

/**
 * main - Entry point
 * 
 * Description: Bitwise XOR (exclusive OR) Operator
 * 
 * Return: Always 0 (Success)
 */

int main(void)
{
      int a = 8;
      int b = 21;

      printf("a ^ b = %d",a^b);

      return (0);
} 
```
8  =  00001000 (Binary)
21 =  00010101 (Binary)

Bitwise Operation of 8  and 21

 00001000
^00010101
 00011101 =  29 (Decimal)

**Bitwise Complement Operator ~**

It changes 1 to 0 and 0 to 1, so complement's in c work differently like the bitwise of 10(-10) which is the 2's compliment instead of 245.

```
#include <stdio.h>

/**
 * main - Entry point
 * 
 * Description: Bitwise Complement Operator
 * 
 * Return: Always 0 (Success)
 */

int main() {

    printf("Output = %d\n",~35);
    printf("Output = %d\n",~-12);
    return 0;
}
```
 
**Right Shift Operator >>**

Shift all bit to the right by a specific number

10 = 00001010
10 >> 3 = 00000010 
10 >> 0 = 00001010

```
#include <stdio.h>

/**
 * main - Entry point
 * 
 * Description: Right Shift Operator
 * 
 * Return: Always 0 (Success)
 */

int main(void)
{
     int i = 10;

     printf("right shift by 3 = %d", i>>3);
     
     return (0);
}
```

**Left Shift Operator <<**

Shift all the bit to the left by a specific number


10 = 00001010
10 << 3 = 00001010000
10 << 0 = 00001010

```
#include <stdio.h>

/**
 * main - Entry point
 * 
 * Description: Left Shift Operator
 * 
 * Return: Always 0 (Success)
 */

int main(void)
{
     int i = 10;

     printf("left shift by 3 = %d", i<<3);
     
     return (0);
}
```

---

 

## # if, if ... else statements

If statement allows you to control if a program enters a section of code or not based on whether a given condition is true or false.

**Syntax**

```
if(boolean_expression 1) {
   /* Executes when the boolean expression 1 is true */
} else if( boolean_expression 2) {
   /* Executes when the boolean expression 2 is true */
} else if( boolean_expression 3) {
   /* Executes when the boolean expression 3 is true */
} else {
   /* executes when the none of the above condition is true */
}
```

**Diagram**


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9a80abd9zmabas10xjl1.png)

**Example**

```
#include <stdio.h>

/**
 * main - Entry point
 *
 * Description: if, if ... else statements
 *
 * Return: Always 0 (Success)
 */

int main(void)
{
   int a = 20;

   if( a == 10 ) 
   {
      /* if condition is true then print the following */
      printf("Value of a is 10\n" );
   } 
   else if( a == 20 ) 
   {
      /* if else if condition is true */
      printf("Value of a is 20\n" );
   } 
   else if( a == 30 ) 
   {
      /* if else if condition is true  */
      printf("Value of a is 30\n" );
   } 
   else 
   {
      /* if none of the conditions is true */
      printf("None of the values is matching\n" );
   }
    
   return (0);
}
```

## # while loop

While loop is used to loop on a statement as long as the given condition is true.

**Syntax** 

```
while(condition) {
   statement(s);
}
```

**Diagram**


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9vtrkixi3bqfwfup55xc.png)

**Example**

```
#include <stdio.h>

/**
 * main - Entry point
 *
 * Description: while loop statement 
 *
 * Return: Always 0 (Success)
 */

int main(void)
{
     /* local variable definition */
     int a = 0;

     /* while loop execution */
     while( a < 10 ) 
     {
            printf("value of a: %d\n", a);
            a++;
     }
     
     return (0);
}

```