为什么程序1和程序2执行结果不同?
#include<iostream>
#include <string>
using namespace std;
struct Test {
int value;
char *info;
void init();
void destroy();
void display();
};
void Test::init()
{
value = 10;
info = "";
}
void Test::destroy()
{
info = false;
}
void Test::display()
{
cout<<"value = "<<value<<"\t"
<<"*info: "<<info<<endl;
}
int main(int argc,char** argv)
{
Test tt;
tt.init();
if(tt.info)
tt.display();
tt.destroy();
if(tt.info)
tt.display();
return 0;
}
#include<iostream>
#include <string>
using namespace std;
struct Test {
int value;
char *info;
void init();
void destroy();
void display();
};
void Test::init()
{
value = 10;
//info = "";
}
void Test::destroy()
{
info = false;
}
void Test::display()
{
cout<<"value = "<<value<<"\t"
<<"*info: "<<info<<endl;
}
int main(int argc,char** argv)
{
Test tt;
tt.init();
if(tt.info)
tt.display();
tt.destroy();
if(tt.info)
tt.display();
return 0;
}
在初始化时,指针的值是不确定的,就是第二个程序的info执行init之后,info的值还是不能确定的
info = false,应该是把0赋值给了info
1.info初始化既然是不确定的,为什么两个程序执行destroy()之前,都是输出的空字符串呢?
2.第二个既然 0 赋给了 info,为什么 if(tt.info) 还能生效?
与大家共勉
根据编译器的不同,false的值不一定就是0就像NULL不一定就是0一样
说以如果将false赋值给其他类型时,像if(tt.info)这样的判断可能不是你想要的结果