Спецификаторы формата
Вывод целых чисел:
спецификатор | для чего |
%d | для вывода целых чисел в десятичной форме |
%u | для вывода целых чисел в десятичной форме без знака |
%о | для вывода целых чисел без знака в восьмеричной форме |
%х | для вывода целых чисел без знака в шестнадцатеричном формате |
Например:
int a = 16;
printf ("%d %o %x",a,a,a); // Вывод на экран: 16 10 20
Т.е. принцип этой функции заключается в следующем: в кавычках пишите нужные спецификаторы формата (ровно столько, сколько нужно вывести переменных); далее после кавычек ставите запятую и перечисляете, так же через запятую, все переменные для вывода в том порядке, в каком вы выставили спецификаторы формата.
Вывод вещественных чисел:
спецификатор | для чего |
%f | для вывода вещественных чисел в обычной форме |
%e | для вывода вещественных чисел в экспоненциальной форме |
Например:
double a = 16;
printf ("%f %e",a,a); // Вывод на экран: 16.000000 1.600000е+01
Число (в экспоненциальной форме): 1.600000е+01 означает всего лишь 1.6 * 10 1
После написания знака (%) можно сразу же указать количество выводимых знаков вещественной составляющей числа.
double a = 16;
printf ("%.3f %.1e",a,a); // Вывод на экран: 16.000 1.6е+01
Управляющие последовательности выводом:
'\n' перевод на новую строку
'\t' табуляция
'\a' сигнал
'\r' курсор в начало строки возвращается
'\'' вывод одиночной кавычки
'\"' вывод двойной кавычки
'\\' вывод косой черты
Примеры с бинарными арифметическими операциями переменных с разным типом данных.
#include <conio.h>
#include <stdio.h>
int main(int argc, char* argv[])
{ int a = 5; // 2 байта
float b = 3; // 4 байта
double c = 2; // 8 байт
char d = 'a'; // 1 байт
printf ("%d\n",sizeof(a+b)); /* 4 байта, следовательно тип float */
printf ("%d\n",sizeof(b+c)); /* 8 байт, следовательно тип double */
printf ("%d\n",sizeof(a+d)); /* 2 байта, следовательно тип int */
getch();
return 0;
}
Функция sizeof()
Функция sizeof() возвращает количество байт, которые память выделяет под переменную. При сложении переменных разных типов, при выходе получается переменная большего из типов. Для переменных типа char: символы, которые она хранит, имеют целочисленный код, поэтому при сложении ни каких проблем не возникает.
Операция - нахождение остатка:
int a = 5, b = 2;
a = a % b; // Значение а будет равно 1
Т.е. происходит обычное деление, только результатом будет остаток от деления.
Функция scanf().
В языке Си кроме функции вывода printf(), существует так же функция scanf() для ввода данных.
Например:
int i;
scanf("%d", &i);
В двойных кавычках записывается спецификатор формата во второй части функции записываем знак (&)-этот знак означает взятие адреса.
Мы должны записывать введенное значение не куда-то там, а именно по адресу, по которому находится наша переменная.