diff --git a/.clangd b/.clangd new file mode 100644 index 0000000..90826a8 --- /dev/null +++ b/.clangd @@ -0,0 +1,2 @@ +CompileFlags: + Add: [-std=c23] \ No newline at end of file diff --git a/practice-1/main.c b/practice-1/main.c new file mode 100644 index 0000000..d0d3d0a --- /dev/null +++ b/practice-1/main.c @@ -0,0 +1,83 @@ +#include +#include +#include + +struct my_perfect_float +{ + unsigned char sign; + signed char exponent; + unsigned char dop_var; + int mantissa; +}; + +// 1. вернуть объект с некорректными данными в нём +// 2. dm + error_code +// 3. dm_e +// 4. error_code as arg +// 5. global vars + +int error_code; + +const int MANTISSA_SIZE = 24; + +struct dm_e +{ + struct dm result; + int error_code; +}; + +struct dm +{ + int32_t div; + int32_t mod; +}; + + +int divmod(int32_t x, int32_t y, struct dm* dm) +{ + int aa = 2; // initialization + aa = 3; // assignment + int bb; // non-initialize + if (y == 0) + { + return 1; + } + *dm = (struct dm){ .div = x / y, .mod = x % y }; + return 0; +} + +// x, y => /, % +struct dm divmod(int32_t x, int32_t y, int *error_code) +{ + int aa = 2; // initialization + aa = 3; // assignment + int bb; // non-initialize + if (y == 0) + { + *error_code = 1; + return (struct dm) { .div = 0, .mod = 0 }; + } + //struct dm dm = { .div = x / y, .mod = x % y }; + //return dm; + return (struct dm){ .div = x / y, .mod = x % y }; // compound literal +} + +int main(int argc, char* argv[]) +{ + if (argc != 4) + { + // free resourses + fprintf(stderr, "Usage: %s A.B \n", argv[0]); + return 1; + } + + int32_t a, b; + + int sz = 5; + // .... 100 lines + int64_t c; + + c = 2; + + return 0; +}