DEV Community

Cover image for Язык программирования Си. Глава(Chapter) 3
Amirshokh
Amirshokh

Posted on • Updated on

Язык программирования Си. Глава(Chapter) 3

1. Бит(Bit), байт(Byte) или октет(Octet) и машинное слово(Word).
Word

2. Различие инициализации(Initialization) и присваивания(Assignment), пример:

int num = 2; //initializing variable num with literal 2
num = 4; //assigning literal 4 to variable num
Enter fullscreen mode Exit fullscreen mode

3. Литералы(Literals), то есть константы(Constants), их суффиксы(Suffixes), для уточнения типа(Type) и их стандартная(Default), то есть десятичная(Decimal) запись и запись в восьмеричном(Octal) или шестнадцатеричном(Hexadecimal) форматах, с префиксами(Prefixes) 0 и 0x соответственно, пример:

16; //decimal int literal
016; //octal int literal, 14 in decimal
16LL; //decimal long long int literal
0x16ULL; //hexadecimal unsigned long long literal, 22 in decimal
16.0L; //decimal long double literal
.16E-2F; //decimal float literal in scientific notation, 0.0016
Enter fullscreen mode Exit fullscreen mode

4. Форматирующие(Formatting) функции ввода и вывода(Input and Output) scanf() и printf():

  • фактические аргументы(Actual Arguments), первым указывается всегда управляющая строка(Control String), пример: "num = %d"; а потом переменное количество аргументов(Variable Length Arguments);
  • вывод непечатаемых символов(Nonprinting Characters) управляющими последовательностями(Escape Sequences), пример: "Have you read the book \"Harry Potter\"\?";
  • cпецификаторы и модификаторы преобразования(Format Specifiers and Their Modifiers), иначе интерпретации переменных, пример: "%.5a + %hd = %lf";
  • флаги(Flags), пример: "%+g" и "%#p".

Примеры форматированного вывода:

printf("|%-10hd|\n", (short)12); //left justification(-), fixed space for 10 symbols(10), short(h), int(d)
printf("|%-+8.3Lf|\n", 3.6L); //forcing to precede with sign(+), 3 digits after decimal point(.3), long double(Lf)
printf("|%#.0e|\n", 3.); //print decimal point even if there are no digits after it(#), float in scientific notation(e)
printf("|%#x|\n", 0x1a); //print prefix 0x(#), hexadecimal number(x)
printf("|% zd|\n", sizeof(int)); //reserving space intended for negative sign( ), size_t(zd)
printf("|%8jX|\n", (long long)0X3CA0F); //intmax_t(j), hexadecimal number in uppercase(X)
printf("|%5.3ti|\n", ptrtoint2 - ptrtoint1); //ptrdiff_t(t), int(i)
printf("|%-8.5s|\n", "C language"); //printing 5 characters(.5), *char(s)
printf("|%#*.*o|\n", width, digits, 016); //print prefix 0(#), variable specified width and presicion(*.*), octal number(o)
printf("|C la%2$nnguage|%1$s", "\n", &printed_symbols); //number of argument(2$, 1$), amount of printed symbols(n)
scanf("%*s %d", &num); //ignore input string(*)
Enter fullscreen mode Exit fullscreen mode

5. Базовые типы данных(Basic Data Types):

  • Целочисленные(Integer) переменные и их минимальные размеры;
  • Вещественные(Real) числа, состоящие из знакового бита(Sign Bit), экспоненты(Exponent) и мантиссы(Mantissa) или значащей части(Significant Value);
  • Переносимые(Portable) или не зависящие от реализации(Implementation-independent) типы в stdint.h, пример: int32_t, intmax_t, int_least8_t, int_fast16_t; и макросы в inttypes.h, пример: "num = %" PRId32;
  • Символьные типы char и unsigned char в ASCII таблица(Table), также типы _Bool - bool в stdbool.h; _Complex и _Imaginary - complex и imaginary в complex.h. Floating Point To Decimal

6. Ошибки округления данных с плавающей запятой(Floating-Point Round-off Errors), проблема переполнения(Overflow) со значением INF и проблема потери значимости(Underflow), субнормальные(Subnormal) числа и значение NaN.

printf("%.10f = %.10f\n", 0.3f * 3, .9f); //round-off error
printf("%.10e\n", 3.402823e38f * 2); //overflow
printf("%f\n", 500000000.f + 3.0f); //underflow
printf("%E\n", 1.40129846E-45F / 2); //subnormal number
//asin() function in <math.h>
printf("%f\n", asin(2.0)); //NaN - not a number
Enter fullscreen mode Exit fullscreen mode

Язык программирования Си 6 издание. Стивен Прата
C Primer Plus 6th edition. Stephen Prata

Top comments (0)