C Programming Language is a foundational language in computer science and software development. Here's an overview and explanation of the basics of C in English, followed by a simple example program.

### Overview of C Programming Language

#### Features of C Programming Language
1. **Simplicity:** C is straightforward with a small set of keywords.
2. **Efficiency:** Produces code that runs almost as fast as code written in assembly language.
3. **Portability:** Code can run on different machines with little or no modification.
4. **Modularity:** Supports functions and libraries for modular programming.
5. **Flexibility:** Can be used for system programming (e.g., OS, compilers) and application programming.

#### History of C Language
- **Developed by:** Dennis Ritchie
- **Year:** Early 1970s
- **Place:** AT&T Bell Labs
- **Purpose:** To develop the Unix operating system

### Basic Structure of a C Program

```c
#include <stdio.h> // Preprocessor directive

int main() {       // Main function
    printf("Hello, World!\n"); // Print statement
    return 0;       // Return statement
}
```

#### Explanation of the Example Program
1. `#include <stdio.h>`: Includes the Standard Input Output library.
2. `int main() { ... }`: The main function where the execution starts.
3. `printf("Hello, World!\n");`: Prints "Hello, World!" to the screen.
4. `return 0;`: Indicates that the program ended successfully.

### Compilation Process in C
1. **Preprocessing:** Handles the directives (like `#include`).
2. **Compilation:** Converts the code to assembly language.
3. **Assembly:** Converts the assembly code to machine code.
4. **Linking:** Combines different object files to create an executable.

### Comments in C
- **Single-line comment:** `// This is a comment`
- **Multi-line comment:** `/* This is a comment */`

### Tokens in C
1. **Keywords:** Reserved words (e.g., `int`, `return`).
2. **Identifiers:** Names given to variables, functions, etc.
3. **Constants:** Fixed values.
4. **Strings:** Sequence of characters.
5. **Operators:** Symbols that perform operations (e.g., `+`, `-`).

### User Input in C
```c
#include <stdio.h>

int main() {
    int number;
    printf("Enter a number: ");
    scanf("%d", &number); // Reads an integer from the user
    printf("You entered: %d\n", number);
    return 0;
}
```

#### Explanation of the User Input Example
1. `int number;`: Declares an integer variable.
2. `printf("Enter a number: ");`: Prompts the user.
3. `scanf("%d", &number);`: Reads the input from the user and stores it in `number`.
4. `printf("You entered: %d\n", number);`: Prints the entered number.

### Data Types in C
- **Basic types:** `int`, `float`, `double`, `char`
- **Derived types:** Arrays, pointers, structures, unions
- **Void type:** Represents the absence of value

### Variables in C
- **Declaration:** `int a;`
- **Initialization:** `int a = 10;`

### Integer Promotions and Type Conversion
- **Integer Promotions:** Implicit conversion of smaller integer types to `int` or `unsigned int`.
- **Type Conversion:** Implicit or explicit conversion of one data type to another.

### Type Casting in C
```c
int a = 10;
float b = (float)a; // Explicitly casting int to float
```

### Booleans in C
- C does not have a dedicated boolean type in the traditional C standard. Typically, `0` is considered `false`, and any non-zero value is considered `true`.
- In C99 and later, you can include `<stdbool.h>` and use `_Bool` type.

Here's a small C program to illustrate these concepts:

```c
#include <stdio.h>
#include <stdbool.h> // Include for boolean type

int main() {
    int a = 10;
    float b = 5.5;
    bool isTrue = true;

    printf("Integer: %d\n", a);
    printf("Float: %.1f\n", b);
    printf("Boolean: %d\n", isTrue); // True is represented as 1

    return 0;
}
```

Gujarati:

Sure, I'll explain the basics of C programming in Gujarati, then provide an example in English.

### C પ્રોગ્રામિંગ ભાષા નો અવલોકન

#### C પ્રોગ્રામિંગ ભાષાના લક્ષણો
1. **સરળતા:** C થોડા કીવર્ડ્સ સાથે સરળ છે.
2. **પ્રભાવશાળી:** તે કોડ પેદા કરે છે જે લગભગ એટલું જ ઝડપથી ચાલે છે જેટલું એસેમ્બલી ભાષામાં લખવામાં આવે છે.
3. **પોર્ટેબિલિટી:** કોડને થોડી કે કોઈ ફેરફાર વિના અલગ અલગ મશીનો પર ચલાવી શકાય છે.
4. **મોડ્યુલરિટી:** ફંક્શન અને લાઇબ્રેરીને સપોર્ટ કરે છે.
5. **લવચીકતા:** સિસ્ટમ પ્રોગ્રામિંગ (જેમ કે OS, કમ્પાઇલર) અને એપ્લિકેશન પ્રોગ્રામિંગ માટે વપરાઈ શકે છે.

#### C ભાષાનો ઇતિહાસ
- **વિકસક:** ડેનિસ રિચ્ચી
- **વર્ષ:** 1970ના આરંભમાં
- **સ્થાન:** AT&T Bell Labs
- **હેતુ:** Unix ઓપરેટિંગ સિસ્ટમ વિકસાવવા

### C પ્રોગ્રામનું મૂળભૂત સ્ટ્રક્ચર

```c
#include <stdio.h> // પ્રિપ્રોસેસર ડિરેક્ટિવ

int main() {       // મુખ્ય ફંક્શન
    printf("Hello, World!\n"); // પ્રિન્ટ સ્ટેટમેન્ટ
    return 0;       // રિટર્ન સ્ટેટમેન્ટ
}
```

#### ઉદાહરણ પ્રોગ્રામનું વર્ણન
1. `#include <stdio.h>`: સ્ટાન્ડર્ડ ઇનપુટ આઉટપુટ લાઇબ્રેરી શામેલ કરે છે.
2. `int main() { ... }`: મુખ્ય ફંક્શન જ્યાં એક્ઝિક્યુશન શરૂ થાય છે.
3. `printf("Hello, World!\n");`: સ્ક્રીન પર "Hello, World!" છાપે છે.
4. `return 0;`: સૂચવે છે કે પ્રોગ્રામ સફળતાપૂર્વક સમાપ્ત થયું.

### C માં કમ્પાઇલેશન પ્રક્રિયા
1. **પ્રિપ્રોસેસિંગ:** ડિરેક્ટિવ્સ (જેમ કે `#include`) સંભાળે છે.
2. **કમ્પાઇલેશન:** કોડને એસેમ્બલી ભાષામાં રૂપાંતરિત કરે છે.
3. **એસેમ્બલી:** એસેમ્બલી કોડને મશીન કોડમાં રૂપાંતરિત કરે છે.
4. **લિન્કિંગ:** વિભિન્ન ઑબ્જેક્ટ ફાઇલોને જોડીને એક્ઝિક્યુટેબલ બનાવે છે.

### C માં ટિપ્પણીઓ
- **એકલ પંક્તિની ટિપ્પણી:** `// આ ટિપ્પણી છે`
- **મલ્ટી-લાઇન ટિપ્પણી:** `/* આ ટિપ્પણી છે */`

### C માં ટોકન્સ
1. **કીવર્ડ્સ:** આરક્ષિત શબ્દો (જેમ કે `int`, `return`).
2. **આઈડેન્ટિફાયર્સ:** વેરિએબલ્સ, ફંક્શન્સ, વગેરેને આપવામાં આવેલા નામો.
3. **કન્સ્ટન્ટ્સ:** સ્થિર મૂલ્યો.
4. **સ્ટ્રિંગ્સ:** અક્ષરોની શ્રેણી.
5. **ઓપરેટર્સ:** ઓપરેશન્સ કરનારા પ્રતીકો (જેમ કે `+`, `-`).

### C માં વપરાશકર્તા ઇનપુટ
```c
#include <stdio.h>

int main() {
    int number;
    printf("Enter a number: ");
    scanf("%d", &number); // વપરાશકર્તા પાસેથી પૂરે પોડતો પૂરવું
    printf("You entered: %d\n", number);
    return 0;
}
```

#### વપરાશકર્તા ઇનપુટ ઉદાહરણનું વર્ણન
1. `int number;`: એક પૂર્ણાંક વેરિએબલ ડિક્લેર કરે છે.
2. `printf("Enter a number: ");`: વપરાશકર્તાને પ્રોમ્પ્ટ કરે છે.
3. `scanf("%d", &number);`: વપરાશકર્તાની ઇનપુટ વાંચે છે અને `number` માં સંગ્રહિત કરે છે.
4. `printf("You entered: %d\n", number);`: દાખલ કરેલ સંખ્યા છાપે છે.

### C માં ડેટા પ્રકારો
- **મૂળભૂત પ્રકારો:** `int`, `float`, `double`, `char`
- **વ્યવહારિત પ્રકારો:** એરે, પોઇન્ટર્સ, સ્ટ્રક્ચર્સ, યુનિયન્સ
- **શૂન્ય પ્રકાર:** મૂલ્યના અભાવને રજૂ કરે છે

### C માં વેરિએબલ્સ
- **ઘોષણા:** `int a;`
- **આરંભ:** `int a = 10;`

### પૂર્ણાંક પ્રોત્સાહનો અને પ્રકાર રૂપાંતર
- **પૂર્ણાંક પ્રોત્સાહનો:** નાની પૂર્ણાંક પ્રકારોના `int` અથવા `unsigned int` માં આપમેળે રૂપાંતર.
- **પ્રકાર રૂપાંતર:** એક ડેટા પ્રકારને બીજા ડેટા પ્રકારમાં આપમેળે અથવા સ્પષ્ટ રૂપાંતર.

### C માં પ્રકાર કાસ્ટિંગ
```c
int a = 10;
float b = (float)a; // સ્પષ્ટ રીતે int ને float માં કાસ્ટિંગ
```

### C માં બુલિયન
- C માં પરંપરાગત C સ્ટાન્ડર્ડમાં સમર્પિત બુલિયન પ્રકાર નથી. સામાન્ય રીતે, `0` ને `false` તરીકે માનવામાં આવે છે, અને કોઈપણ નોન-ઝીરો મૂલ્યને `true` તરીકે માનવામાં આવે છે.
- C99 અને પછીના સંસ્કરણોમાં, તમે `<stdbool.h>` સમાવેશ કરી શકો છો અને `_Bool` પ્રકારનો ઉપયોગ કરી શકો છો.

### Example Program in English

Here's a small C program to illustrate these concepts:

```c
#include <stdio.h>
#include <stdbool.h> // Include for boolean type

int main() {
    int a = 10;
    float b = 5.5;
    bool isTrue = true;

    printf("Integer: %d\n", a);
    printf("Float: %.1f\n", b);
    printf("Boolean: %d\n", isTrue); // True is represented as 1

    return 0;
}
```