| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 597 人关注过本帖
标题:为什么字符比较的返回值全是false?
只看楼主 加入收藏
竞天问
Rank: 2
等 级:论坛游民
帖 子:12
专家分:10
注 册:2009-9-17
结帖率:100%
收藏
已结贴  问题点数:15 回复次数:3 
为什么字符比较的返回值全是false?
比如:
(this->letter[i]!='?')&&(tmp.letter[i]=='?')
this->letter[i]=='?'
是在一类里的函数写的,而在主函数里写:
char a,b;
 cin>>a>>b;
 if(a==b)
  cout<<"same";
 else
  cout<<"different";
又运行正常;
char a[2];
 cin>>a[0]>>a[1];
 if(a[1]==a[0])
  cout<<"same";
 else
  cout<<"different";
这个也正常。把最上面的'?'改成字符变量也不行。
为什么?
搜索更多相关主题的帖子: 字符 返回值 false 
2009-10-13 21:57
竞天问
Rank: 2
等 级:论坛游民
帖 子:12
专家分:10
注 册:2009-9-17
收藏
得分:0 
这是部分代码,但能体现问题所在
#include<iostream.h>
class JiHe
{
private:
    char letter[26];//=
public:
    JiHe();
    JiHe(JiHe &tmp);
    void In();
    void Out();
};
void JiHe::Out()
{
    for(int i=0;i<=25;i++)
    {
        if(this->letter[i]!='?')
            cout<<this->letter[i];
 
    }
    cout<<endl;
}
 
void JiHe::In()
{
    char tmp;
    cin>>tmp;
    while(tmp!='?')
    {
        if(tmp>='A'&&tmp<='Z')
            letter[tmp-'A']=tmp;
        cin>>tmp;
    }
}
JiHe::JiHe()
{
    char letter[26]={'?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?'};
}
void main()
{
 
    JiHe JH1,JH2,tmp;
    JH1.In();
    JH1.Out();
}
2009-10-14 07:12
竞天问
Rank: 2
等 级:论坛游民
帖 子:12
专家分:10
注 册:2009-9-17
收藏
得分:0 
还是我自己解决吧
JiHe::JiHe()
{
    for(int i=0;i<26;i++)
        letter[i]='?';
}
2009-10-14 12:14
calm2599
Rank: 2
等 级:论坛游民
威 望:1
帖 子:6
专家分:50
注 册:2009-10-15
收藏
得分:0 
字符的比较和整型的比较不同,按照上面代码的写法,比较的是字符所在的内存地址,而非字符本身,所以比较结果当然是false了

比较字符是否相等,应该用int strcmp( const char *string1, const char *string2 );函数来处理才能满足你的需求
2009-10-16 17:50
快速回复:为什么字符比较的返回值全是false?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016776 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved