Modern C++ Challenge
PacktPublishing/The-Modern-Cpp-Challenge: The Modern C++ Challenge, published by Packt
cpprefjp - C++日本語リファレンス
ゼロから学ぶ C++
環境構築
MacBook Pro M3を使ってる
【M1以降の Mac, Windows対応】Visual Studio CodeでC/C++を実行する環境を構築する方法を参考にVSCodeで開発する環境を作る
コンパイラはよくわからんのでgccをとりあえず使う。MacだとClangとかいうのもあるらしいけど。
gcc系のコンパイラとclang系のコンパイラがあるらしい
brew install gccを実行し始めたが終わらん...
code:txt
% brew info gcc ~/dev/modern_cpp_challenge
==> gcc: stable 14.2.0 (bottled), HEAD
code:txt
% gcc --version ~/dev/modern_cpp_challenge
Apple clang version 15.0.0 (clang-1500.3.9.4)
Target: arm64-apple-darwin23.6.0
↑のサイトの通りに進めたらgccとg++が入ったのでok(clang系がデフォで入ってるけどこれをgcc系のコンパイラに変えるのが目的だったのか)
基本文法を学ぶためゼロから学ぶ C++をやっていく
つまり、関数に配列を渡すというのは配列の先頭要素へのポインタを渡すことになってしまうのです。int 5という型がint*になってしまうため、配列の要素数の情報が欠落してしまいます。そのため、関数に配列を渡す場合は、配列の先頭要素へのポインタと要素数をセットで渡す必要があります。
1章
C++の整数型について
c++ - C++言語でのint型とlong型とlong long型の違いについて - スタック・オーバーフロー
c99 言語規格書 ISO/IEC 9899:1999 が定めているのは
char は 8bit 以上 int 以下のサイズであること
int は 16bit 以上のサイズであること
long は 32bit 以上 long long 以下のサイズであること
long long は 64bit 以上のサイズであること
GCCでは
char: 8(3桁。256-1)
short: 16(5桁くらい。65536-1)
int: 32(9桁くらい。42億くらい)
long: 64(20桁くらい)
グレイコード - Wikipedia
v(元の数)を1ビット右にシフトしてvと排他的論理和をとったもの
v ^ (v >> 1)
数値が1変化するごとに1bitずつしか動かない
グレイコードの各桁に全ての円盤を対応づけるとハノイの塔が解ける
C++