1. Introduction
1.1 The Importance of Variables in C
In C programming, variables are essential for storing and manipulating data dynamically. By using variables, you can efficiently manage your program’s data, easily modify or reuse values as needed, and write flexible code. Especially in larger programs, managing variables properly greatly improves both the efficiency and readability of your code.
2. What Are Variables?
2.1 Definition of Variables
A variable is a storage location in a program used to temporarily hold data. In C, you must declare a variable before using it. The example below declares a variable called age
and stores the value 25.
int age;
age = 25;
With variables, you can reuse data, easily change values later, and extend your programs more efficiently.
2.2 The Role of Variables
Variables enable you to store and reuse data, making your programs more flexible. For example, the following code uses a char
type variable to display a string.
char message[] = "こんにちは";
printf("%sn", message);
By using variables in this way, you can easily manage data and efficiently use the same information in multiple places.
3. Declaring and Initializing Variables
3.1 How to Declare Variables
In C, you must declare a variable before you use it. Declaring a variable allocates the necessary memory space. The example below declares an integer (int
) variable named number
.
int number;
3.2 Initializing Variables
It’s recommended to initialize variables at the time of declaration. Using uninitialized variables can lead to unpredictable program behavior, so it’s always best practice to initialize them.
int age = 30;
This code declares a variable age
as an integer and assigns it an initial value of 30. Issues that occur when using uninitialized variables will be explained later.
4. Data Types and Their Limitations
4.1 Common Data Types in C
C offers several data types, and it’s important to select the appropriate type based on the kind of data you’re handling. Here are the most common data types explained:
int
(Integer): Stores integer values. On 32-bit systems, it can hold values from-2,147,483,648
to2,147,483,647
. Signed integers are standard. Example:int age = 25;
double
(Floating-Point Number): Stores numbers with decimal points. Thedouble
type typically offers 15-digit precision and can represent very large or very small values. Example:double pi = 3.14159;
char
(Character): Stores a single character. Character data corresponds to ASCII codes and is represented as numbers from0
to255
. Example:char grade = 'A';
4.2 Usage Examples and Notes for Each Data Type
Choose a data type based on the range and characteristics of the values you want to handle. For instance, the char
type uses one byte of memory, and you can represent characters using their numeric values, as shown below:
char letter = 65;
printf("%cn", letter); // Output: A
This example displays the character “A”, which corresponds to the ASCII code 65. Correct use of data types is essential for program stability and efficiency.

5. Variable Scope
5.1 Local and Global Variables
In C, the scope of a variable determines where it can be accessed. The two main types of scope are local variables and global variables.
- Local Variables: Declared within a function or block, accessible only within that scope. They can’t be accessed from other functions or blocks.
void example() {
int localVar = 10;
printf("%d", localVar); // Using a local variable
}
- Global Variables: Declared outside of functions, accessible throughout the entire program from any function or block.
int globalVar = 20;
void example() {
printf("%d", globalVar); // Using a global variable
}
5.2 The Importance of Managing Scope
Choosing between local and global variables affects both the readability and safety of your program. Global variables can be convenient, but overusing them can lead to bugs, so it’s best to use them only when necessary for specific purposes.
6. Examples and Best Practices for Using Variables
6.1 Overwriting and Reusing Variables
You can assign new values to variables at any time. Here’s an example:
int age = 20;
age = 21; // Overwritten with a new value
Variables allow for dynamic value changes during program execution, enabling flexible code design.
6.2 Naming Conventions for Variables
To write readable code, it’s important to follow variable naming conventions. Here are common examples:
int userAge = 30; // Camel case
int user_age = 30; // Snake case
Use meaningful names that reflect the variable’s purpose to make your code easier for others to understand.
7. Common Errors and Solutions
7.1 Errors Caused by Using Uninitialized Variables
Using uninitialized variables may result in unpredictable behavior. The code below uses an uninitialized variable number
, leading to an undefined result.
int number;
printf("%d", number); // Using an uninitialized variable
To avoid this, always initialize your variables before use.
int number = 0; // Initialized variable
printf("%d", number); // Outputs as expected
7.2 Errors Due to Data Type Mismatches
Assigning a value of the wrong data type to a variable can lead to data loss. For example, the code below assigns a decimal value to an int
variable, so the decimal part is lost.
int number = 3.14; // Decimal assigned to an integer
printf("%dn", number); // Output is 3 (decimal part is truncated)
To avoid this, use the correct data type for your data. For decimals, use the double
or float
type.
double number = 3.14;
printf("%fn", number); // Output is 3.140000
8. Practical Exercises
8.1 Exercise 1: Implementing Basic Arithmetic Operations
In this exercise, use two integer variables to perform addition, subtraction, multiplication, and division, then display the results.
#include <stdio.h>
int main() {
int a = 10;
int b = 5;
// Output the results of arithmetic operations
printf("Addition: %dn", a + b);
printf("Subtraction: %dn", a - b);
printf("Multiplication: %dn", a * b);
printf("Division: %dn", a / b);
return 0;
}
Tip: Division with integers will only show the integer result. For example, a / b
outputs 2
, omitting any decimal part. To get decimal results, use a variable of type double
.
8.2 Exercise 2: Understanding Variable Scope
Next, let’s explore the difference between local and global variables. Local variables are only accessible inside a function, while global variables can be used throughout the program.
#include <stdio.h>
int globalVar = 10; // Global variable
void function() {
int localVar = 20; // Local variable
printf("Local variable in function: %dn", localVar);
printf("Global variable in function: %dn", globalVar);
}
int main() {
function();
// Access global variable
printf("Global variable in main: %dn", globalVar);
// Access local variable (this will cause an error)
// printf("Local variable in main: %dn", localVar);
return 0;
}
Tip: If you try to access a local variable from main, you’ll get an error. Uncomment the line to check it for yourself.
8.3 Exercise 3: Initializing Variables and Error Handling
This exercise lets you see the consequences of using an uninitialized variable. In the code below, number
is not initialized, which can lead to unpredictable behavior.
#include <stdio.h>
int main() {
int number; // Uninitialized variable
printf("Value of uninitialized variable: %dn", number);
return 0;
}
Now, try running the corrected version with a properly initialized variable and compare the results.
#include <stdio.h>
int main() {
int number = 0; // Initialized variable
printf("Value of initialized variable: %dn", number);
return 0;
}