注册 登录
编程论坛 C++教室

("test"=="test") 本来不相等,我的电脑却显示相等,为什么呀?

meimeng515 发布于 2009-10-07 11:20, 851 次点击
  #include <iostream.h>  
#include <string.h>
void main(void)  
{  
    if(strcmp("test","test")==0)  
    {  
        cout<<"相等"<<endl;  
    }  
    else  
    {  
        cout<<"不相等";  
    }  


    if("test"=="test")  //这里应该输出不相等呀,为什么我的电脑却是相等呀
    {  
        cout<<"相等";  
    }  
    else  
    {  
        cout<<"不相等";  
    }




}
9 回复
#2
flyingcloude2009-10-07 11:33
回复 楼主 meimeng515
这个是相等的啊,
ps:你原先是不是学java的?在java里是不相等的
#3
meimeng5152009-10-07 11:39
你有没有搞错呀?在c++中就应该不相等呀,我现在正在看课本,它们不是相同地址
#4
kspliusa2009-10-07 13:40
回复 楼主 meimeng515
看看 这里 http://topic.
#5
最左边那个2009-10-07 14:12
2楼说的没错,这个是相等的!strcmp是字符串比较函数,是比较两者的每个字母一样不一样,又不关地址事,不用理地址的!
#6
flyingcloude2009-10-07 15:51
以下是引用meimeng515在2009-10-7 11:39:16的发言:

你有没有搞错呀?在c++中就应该不相等呀,我现在正在看课本,它们不是相同地址
搞是没搞错的。在c里面可能是不相等的吧,是当成c-串来处理,不过我没有写过。
在c++中,编译器都进行了优化。刚刚我用vc6,vc10,gcc,g++进行了测试,也都是相等的
#7
水云逸2009-10-07 16:33
相等
这个比较的是字符串(长度&字符),不是地址
#8
faye30002009-10-07 20:30
strcmp比的是每个字符,而不是地址~
#9
jjg2009-10-07 22:14
楼上的正确
#10
fgchg9112009-10-08 04:40
"test"这个是存储在常量区,谁懂这内存
1