とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

変数と定数

区別する必要はあるのだろうか?

int main(void){
    const int a = 1, b = 2;
    int c = a + b;
    int d = 1 + 2;
}

c と d の違いは何だろうか?*1

void func(int*a){}
int main(void){
    func(&1);
}

これがC言語ではエラーになるのはなぜだろうか?
ぶっちゃけ,次のような代入のコードが通ってもいいような気がする。

1 = 2;
int a = 1, b = 2;
a = b;

同じじゃないの?
こんな比較をしてみたり。

if (&1 != &1)
    puts("これは違うオブジェクト");

*1:言語仕様の話だとCとC++で変わってくるけど,実行結果だけに注目してね。