Итак, для начала приведу таблицу, в которой представлены все типы данных и их индификаторы при работе с операторами.
№ п | Тип данных | ID | Размер (16) | Размер (32) |
1. | int | %d | 16 | 32 |
2. | short int | %d | 16 | 16 |
3. | long int | %d | 32 | 32 |
4. | unsigned int | %d | 16 | 32 |
5. | signed int | %d | 16 | 32 |
6. | unsigned short int | %d | 16 | 16 |
7. | signed short int | %d | 16 | 16 |
8. | unsigned long int | %d | 32 | 32 |
9. | signed long int | %d | 32 | 32 |
10. | float | %f | 32 | 32 |
11. | double | %lf | 64 | 64 |
12. | long double | %lf | 80 | 80 |
13. | char | %s/%c | 8 | 8 |
14. | unsigned char | %s/%c | 8 | 8 |
15. | signed char | %s/%c | 8 | 8 |
Диапазоны | ||
Тип данных | 16 бит | 32 бит |
int | -32768/32767 | -2147483648/2147483647 |
short int | -32768/32767 | -32768/32767 |
long int | -2147483648/2147483647 | -2147483648/2147483647 |
unsigned int | 0/65535 | 0/4294967295 |
signed int | -32768/32767 | -2147483648/2147483647 |
unsigned short int | 0/65535 | 0/65535 |
signed short int | -32768/32767 | -32768/32767 |
unsigned long int | 0/4294967295 | 0/4294967295 |
signed long int | -2147483648/2147483647 | -2147483648/2147483647 |
float | 3.4e-38/3.4e+38 | 3.4e-38/3.4e+38 |
double | 1.7e-308/1.7e+308 | 1.7e-308/1.7e+308 |
long double | 3.4e-4932/1.1e+4932 | 3.4e-4932/1.1e+4932 |
char | -128/127 | -128/127 |
unsigned char | 0/255 | 0/255 |
signed char | -128/127 | -128/127 |
Стоит отметить то, что все типы пишутся малыми
буквами, и если вдруг вы написали их хотя бы с одной большой буквой компилятор
не поймёт это и выдаст ошибку.
После того, как вы увидели какие типы данных существуют, пора бы поговорить о каждом из них отдельно. Начнём по порядку..
Итак, int это целое число. Если вам в
программе нужно число которое будет всегда целым то лучше всего вам использовать
именно этот тип данных. Этот тип данных хорошо использовать, например, для счётчика,
который считает количество раз (сколько раз выполнился цикл).
Этот тип предполагает использование только целого числа, т.е. если вы объявите переменной
int число с дробной частью, то при выполнении программы оно обрежется до целой части (int 1.1 = 1).
В зависимости от того, какие числа вам нужны выбирается также "подтип":
Если используются малые числа (от 32678 до 32767), то рациональнее всего будет использовать тип
short int, т.к. в памяти компьютера он занимает меньше места, чем например
long int.
В отличие от типа int, этот тип уже предназначен
для того, чтобы хранить данные с дробной частью (плавающей точкой). В отличие
от других типов - этот не имеет других "подтипов".
При выводе результата на экран возможен выбор формата вывода.
%f - обычный вывод (целая часть.8 символов дробной части).
%2.4f - вывод на экран 2-ух символов целой части . 4-ёх символов дробной части.
%2.f - вывод на экран 2-ух символов целой части (дробная часть определяется автоматически).
%.2f - вывод на экран 2-ух символов дробной части (целая часть определяется автоматически).
Самый большой по размеру тип данных. Но несмотря
на это он охватывает большой диапазон. Имеет один "подтип" - long.
%lf - обычный вывод (целая часть.8 символов дробной части).
%2.4lf - вывод на экран 2-ух символов целой части . 4-ёх символов дробной части.
%2.lf - вывод на экран 2-ух символов целой части (дробная часть определяется автоматически).
%.2lf - вывод на экран 2-ух символов дробной части (целая часть определяется автоматически).
В отличие от других типов, этот тип хранит в себе
уже не числа, а символы, так что этому типу можно присвоить, например, слово.
%s - выводит на экран строку.
%с - выводит на экран символ.
Пример программы с использованием переменных:
#include <stdio.h> int main() { int i; // объявляем переменную типа int float a,b; // объявляем переменную типа float double y[10]; // объявляем массив типа double char *s="A-Soft studio";// объявляем переменную типа char и присваиваем ей строку "A-Soft studio" for(i=0;i<10;i++) { printf("Enter a: "); scanf("%f", &a); printf("Enter b: "); scanf("%f", &b); y[i]=a+b; printf("Y[%d] = %lf\n", i+1, y[i]); } printf("%s is cool", s); return 0; }
Скачать пример.
После того как мы ознакомились с типами данных перейдём на изучение операторов...
if-else-if | оператор | if(если), else(иначе), esle if(иначе если) |
? | оператор | см.ниже |
switch | оператор | |
for | цикл | for(для) |
while | цикл | while(пока) |
do/while | цикл | do(выполнять)/while(пока) |
break | оператор | break(прервать) |
exit() | функция | exit(выход) |
continue | оператор | continue(продолжить) |
goto | метка | goto(перейти к) |
Лесенка if-else-if используется для выбора нужного вам условия, и в зависимости от условия применять различные операторы.
Оператор if имеет следующую структуру:
if (выражение) оператор(ы); else if (выражение) оператор(ы); . . . else оператор(ы);
Следует отметить что условие выбирается сверху вниз.
Пример программы с использованием лесенки if-else-if:
#include <stdio.h> #include <math.h> main() { int x; double y; printf("Enter x: "); scanf("%d", &x); if(x>0) { y=pow(x,0.5); } else if(x<0) { y=x*x; } else { y=123; } printf("Y = %lf, X = %d", y, x); }
Скачать пример.
Оператор ? может использоваться для замены стандартной конструкции if/else.
Оператор ? имеет следующею структуру:
выражение1 ? выражение2 : выражение3
Принцип работы оператора ? заключается в следующем. Сначала вычисляется выражение1, если оно истинно, то вычисляется выражение2, если ложно, то вычисляется выражение3.
Конструкция if/else | Конструкция ? |
x=-5; if(x>0) { y=pow(x,05); } else { y=x*x; } |
x=-5; y=x>0 ? pow(x,05) : x*x; |
Также как и предыдущий оператор, оператор switch может использоваться для замены оператора if/else.
Оператор switch имеет следующею структуру:
switch (выражение) { case константа1: последовательность операторов break; case константа2: последовательность операторов break; case константа3: последовательность операторов break; . . . default: последовательность операторов }