数独自動生成ソフト開発で学ぶ超初心者のためのC++マルチスレッドプログラミング入門
第2講 変数
第2話 a = 2の意味
一見するとa = 2は等式のように見えます。
等式ならば
コピペ用
#include<iostream>
#include<conio.h> //while (!_kbhit())を使うために必要
using namespace std;
int main() {
int a;//私は整数を出し入れする変数だ!
2 = a;
cout << "a = " << a << endl;
while (!_kbhit());//待機させるための役割を持つ
}
でもよいことになりますが、F5を押す前からデバッガ
(debagするソフト、deは取る、bag虫でdebagはプログラムの欠陥を直すこと
デバッガはプログラムの欠陥を直す作業を支援するソフト)
が問題があることを指摘しています。
2の下に赤い波線があります。
実際F5を押すと
が出てきます。いいえをクリックすると、
エラー原因を教えてくれます。
『式は変更可能な左辺値である必要があります』
変数にしないとだめだよ、
と言っています。
a = 2は用意した箱に整数2を入れることであって、
aと2が等しいという意味ではありません。
aは整数を入れる箱の名前であって、
当然2とは等しくありません。
(メモリには2つの意味があることに注意してください。
1つは記憶であり、もう1つは記憶容量です。
荒井由実の『いちご白書をもう一度』に出てくる
「二人だけのメモリー」は二人だけの記憶という意味ですが、
今問題にしているメモリは記憶容量の方です)
データを入れるために割り振ったメモリの名前であって、
メモリに書き込んだ2ではないです。
ですから、
a = 2
は等式ではないという話は結構重要な話です。
人に住所と名前があるようにメモリにも番地と名前があるのです。
割り振ったメモリが正確な理解になりますが、
最初から難しく考える必要はなくて、
データを入れる箱が変数と理解しておけば何の問題もありません。
ですから前話で話した
---------------------------------------------------------------
整数を入れる箱を用意してその箱の名前をaとしたわけです。
aとしたわけです。
そして
a = 2;
によって
その箱に2を入れたわけです。
---------------------------------------------------------------
という理解で十分です。
私たちはハードの専門家を目指しているわけではありません。
コンピュータが意図した通りに動けばよいので、
ハードの仕組みまで理解する必要はありません。
何度も書きましたが、しきりに更新をしていた10年ぐらい前は
『VC++ 初心者』『VC++ 入門』『VBA 入門』などでgoogleランキングで、
上位を独占していましたし、
私の開発した数独自動生成ソフトは、
南信州新聞社と下野新聞社において出題に使われています。
南信州新聞においてはほぼ毎日使われていますし、
下野新聞においても週5題掲載されているのです。
私の開発したソフトを無料提供しているわけです。
さらに言えば、おそらくさまざまな広報誌で私の数独自動生成ソフトが使われていると考えています。
私のサイトには広報誌は連絡せずに使っていただいて結構ですと書いてありますから、
連絡がきたのは1つのみですが、
おそらく多くの広報誌が利用してくださっていると推測しています。
私の理解で十分なことを証明するために以上の脱線をしました。
話を元に戻しましょう。
a = 2はaと2が等しいという意味ではなく、
用意した箱に2を入れている(代入)しているだけです。
ですから、
a = 2
は
a←2
とイメージした方がよいのです。
確かに整数型変数はたくさん出てきますので、
int 整数a;
と宣言することにしますので、
コードは
#include<iostream>
#include<conio.h> //while (!_kbhit())を使うために必要
using namespace std;
int main() {
int 整数a;//私は整数を出し入れする変数だ!
整数a = 2;
cout << "整数 = " << 整数 << endl;
while (!_kbhit());//待機させるための役割を持つ
}
に変更しておいてください。
第1話へ 第3話へ
トップへ