From afc4c14e54d40e549acfc002e251cbf69b83595e Mon Sep 17 00:00:00 2001 From: Tibor Bizjak Date: Wed, 12 Jul 2023 21:38:31 +0200 Subject: [PATCH] Inital commit for udemy c++ course --- .gitignore | 8 ++++++++ README.md | 1 + udemy-cpp/01-basics/01-ranges.cc | 22 ++++++++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 udemy-cpp/01-basics/01-ranges.cc diff --git a/.gitignore b/.gitignore index 1879728..7fb1a14 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,11 @@ !k\&r/*/[0-9]*.c # and header files !k\&r/*/*.h + +# ---- udemy c++ .gitignore ---- +# except udemy cpp +!udemy-cpp/ +# excpet chapters +!udemy-cpp/[0-9]*/ +# except solutions +!udemy-cpp/*/[0-9]*.cc diff --git a/README.md b/README.md index 33b912e..cb1dedf 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ # Solutions to varius excersises Solutions to varius excersises from different sources. - k&r - [The C Programming Language](https://en.wikipedia.org/wiki/The_C_Programming_Language) +- udemy-cpp - [Quick Start to Modern C++ for Programmers](https://www.udemy.com/course/quick-start-to-modern-c-for-programmers/) diff --git a/udemy-cpp/01-basics/01-ranges.cc b/udemy-cpp/01-basics/01-ranges.cc new file mode 100644 index 0000000..f90cb14 --- /dev/null +++ b/udemy-cpp/01-basics/01-ranges.cc @@ -0,0 +1,22 @@ +#include +#include +#include + +/* somewhat overcomplicated, could use macros provided by cstdint */ +/* take advantage of two's complement */ +#define INT_TEST(BITS) \ + std::int##BITS##_t i##BITS = ~(~UINT##BITS##_C(0) << (BITS-1)); \ + std::uint##BITS##_t u##BITS = -1; \ + std::printf("%-10s %" PRId##BITS "\n", "int"#BITS"_t" , i##BITS); \ + std::printf("%-10s %" PRIu##BITS "\n", "uint"#BITS"_t" , u##BITS) + +#define BITS X(8) X(16) X(32) X(64) + +/* prints sizes of varius (u)intX_t types */ +int main() +{ + std::cout << "max values of intx_t"; + #define X(B) std::cout << '\n'; INT_TEST(B); + BITS + #undef X +}