Modern C++ Challenge
環境構築
MacBook Pro M3を使ってる
コンパイラはよくわからんのでgccをとりあえず使う。MacだとClangとかいうのもあるらしいけど。
gcc系のコンパイラとclang系のコンパイラがあるらしい
brew install gccを実行し始めたが終わらん...
code:txt
==> gcc: stable 14.2.0 (bottled), HEAD
code:txt
Apple clang version 15.0.0 (clang-1500.3.9.4)
Target: arm64-apple-darwin23.6.0
↑のサイトの通りに進めたらgccとg++が入ったのでok(clang系がデフォで入ってるけどこれをgcc系のコンパイラに変えるのが目的だったのか)
つまり、関数に配列を渡すというのは配列の先頭要素へのポインタを渡すことになってしまうのです。int 5という型がint*になってしまうため、配列の要素数の情報が欠落してしまいます。そのため、関数に配列を渡す場合は、配列の先頭要素へのポインタと要素数をセットで渡す必要があります。 1章
C++の整数型について
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桁くらい)
v(元の数)を1ビット右にシフトしてvと排他的論理和をとったもの v ^ (v >> 1)
数値が1変化するごとに1bitずつしか動かない