# Variables and Arithmetic¶

## My Second Program (1)¶

```#include <stdio.h>

/* Fahrenheit/Celsius Table
0 - 300, step 20 */
int main(void)
{
int fahr, celsius;
int lower = 0, upper = 300, step = 20;

fahr = lower;
while (fahr <= upper) {
celsius = 5 * (fahr - 32) / 9;
printf("%d\t%d\n", fahr, celsius);
fahr = fahr + step;
}

return 0;
}
```

## My Second Program (2)¶

 ```/* ... */ ``` Comment (can span multiple lines) ```int fahr, celsius; ``` Variable definition Must come at the beginning of a block ```int lower = 0, upper = 300, step = 20; ``` Variable definition and initialization

## My Second Program (3)¶

 ```while (fahr <= upper) { ... } ``` Loop: “While condition holds, execute body” Condition: `fahr` is less or equal `upper` ```celsius = 5 * (fahr - 32) / 9; ``` Usual arithmetic (expression) ⟶ usual operator precedence rules
• Careful: integer division brutally truncates decimal places!

• More natural but always 0: `5/9 * (fahr-32)`

## My Second Program (4)¶

```printf("%d\t%d\n", fahr, celsius);
```
• Formatted output

• ⟶ number of arguments can vary (?)

• `%d`” obviously means “integer”

• Important: `printf()` is not part of the core language, but rather an ordinary library function

• standard library

## More Datatypes¶

 `int` Integer, nowadays mostly 32 bits wide `float` Floating point number, mostly 32 bit `char` Single character (one byte, generally) `short` Smaller integer `double` double precision variant of `float`
• Width and precision of all datatypes is machine dependent!

• Compound datatypes: arrays, structures, … (⟶ later)