DEV Community 👩‍💻👨‍💻

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

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), иначе интерпретации переменных, пример: "%.5f + %hd = %lf";
  • флаги(Flags), пример: "%+d" и "%#p".

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

printf("|%-10hd|\n", (short)12);
printf("|%-+#8.3Lf|\n", 3.6L);
printf("|%#x|\n", 0x1a);
printf("|% zd|\n", sizeof(int));
printf("|%8jX|\n", (long long)0X3CA0F);
printf("|%5.3ti|\n", ptrtoint2 - ptrtoint1);
printf("|%-8.5s|\n", "C language");
printf("|%#*.*o|\n", width, digits, 016);
printf("|%1$n|\n", &printed_symbols);
scanf("%*s %d", &num);
Enter fullscreen mode Exit fullscreen mode

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

  • Целочисленные(Integer) переменные и их минимальные размеры;
  • Вещественные(Real) числа, состоящие из знакового бита(Sign Bit), экспоненты(Exponent) и мантиссы(Mantissa) или значащей части(Significant Value);
  • Переносимые(Portable) типы в 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.

#include <stdio.h>
#include <math.h>

int main()
{
    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
    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)

🌚 Friends don't let friends browse without dark mode.

Sorry, it's true.