キーボード入力した一文字を取得して、char型配列に格納するプログラムを作っていたのだが、
変数ではなく配列の要素番号が変わってしまう現象が起きた。
#include <iostream>
class Obj{
private:
char c[10];
int i;
public:
Obj(void);
void func(void);
};
Obj::Obj(){
i = 0;
}
void Obj::func(void){
std::cout<<"i = "<<i<<std::endl;
c[i] = 'a';
std::cout<<"i = "<<i<<std::endl;
}
int main (void ){
Obj obj;
obj.func();
return 0;
}
これを実行するとclass Obj{
private:
char c[10];
int i;
public:
Obj(void);
void func(void);
};
Obj::Obj(){
i = 0;
}
void Obj::func(void){
std::cout<<"i = "<<i<<std::endl;
c[i] = 'a';
std::cout<<"i = "<<i<<std::endl;
}
int main (void ){
Obj obj;
obj.func();
return 0;
}
$ ./a.out
i = 0
i = 97
となる。i = 0
i = 97
i はいじってないのにと、思ったが、
原因は、char c[]の部分。
これをちゃんとchar c[10]とかにしておけば、よし。
0 件のコメント:
コメントを投稿