| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 397 人关注过本帖
标题:有点不明白
只看楼主 加入收藏
jhhxxx
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-7-23
结帖率:0
收藏
已结贴  问题点数:10 回复次数:4 
有点不明白
32. What will be the result of the following program?
main()
{char p[]="String";
int x=0;
if(p=="String")
{printf("Pass 1");
if(p[sizeof(p)-2]=='g')
printf("Pass 2");
else
printf("Fail 2");
}
else
{
printf("Fail 1");
if(p[sizeof(p)-2]=='g')
printf("Pass 2");
else
printf("Fail 2");
}
}
最终的结果 Fail 1, Pass 2,而printf("%s",p);出来的结果就是string  为什么会出faile1  if(p=="String")
搜索更多相关主题的帖子: will following result 
2010-05-28 15:35
bccn250
Rank: 5Rank: 5
等 级:职业侠客
帖 子:154
专家分:379
注 册:2010-5-25
收藏
得分:3 
会不会是要改成 if(*p=="String")

加上取值操作符"*"
2010-05-28 16:45
刚开始吧
该用户已被删除
收藏
得分:3 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-28 22:24
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:3 
回复 楼主 jhhxxx
输出结果没有错!我稍微帮你分析了一下。你看看
程序代码:
#include"iostream.h"
#include<stdio.h>
#include<string.h>

int main()
{
    char p[]="String";
    int x=0;
    cout<<sizeof(p)<<endl;
    if(p=="String")//p是一个地址,因此这个逻辑表达式的值肯定是假,所以这个分支是肯定没有执行的。
    {
        printf("Pass 1");
        if(p[sizeof(p)-2]=='g')
            printf("Pass 2");
        else
            printf("Fail 2");
    }
    else
    {
        printf("Fail 1");        //输出结果中的fail1就是这里输出的
        if(p[sizeof(p)-2]=='g')//sizeof(p)的值是7,所以p[sizeof(p)-2]=p[5],所以这个逻辑表达式的值是真,执行它的分支语句
            printf("Pass 2"); //输出结果中的pass2就是这里输出的。
        else
            printf("Fail 2");
    }

    cout<<endl;
    return 0;

}

 

[ 本帖最后由 南国利剑 于 2010-5-28 23:14 编辑 ]

南国利剑
2010-05-28 23:12
bccn250
Rank: 5Rank: 5
等 级:职业侠客
帖 子:154
专家分:379
注 册:2010-5-25
收藏
得分:0 
哦,好像想起来了,

p 应该是字符数组的首地址

printf("%s",p);能显示应该是因为 %s 把 p 当作字符串来输出

字符数组不是这样比较的,应该有专门的函数吧,

要不然你自己写一个 ,进行一个字符一个字符的比较

应该是这样吧
2010-05-29 16:21
快速回复:有点不明白
数据加载中...
 
   



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

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