标题:c和c++的区别
只看楼主
丨丨
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2018-10-15
结帖率:90.48%
已结贴  问题点数:13 回复次数:4 
c和c++的区别
#include"stdio.h"
#include"string.h"
int main()
{
    char a[81],b[81];
    int s[100];
    int m,max=0,i;
    for(i=0;;i++)
    {
        b[81]={'\0'};
        gets(a);
        
        if(strcmp(a,"****")==0)
        {break;
        }
        else
        {s[i]=strlen(a);
        if(s[i]>max)
        {
            max=s[i];
            strcpy(b,a);
        }
        }
        
    }
    puts(b);
    return 0;
   
}

在一个oj网站上,用c语言提交这个代码显示编译错误,但是用c++提交就正确了,why???
搜索更多相关主题的帖子: c++ 区别 include int max 
2019-03-03 16:44
编程好难a
Rank: 1
等 级:新手上路
帖 子:2
专家分:4
注 册:2019-3-3
得分:4 
2019-03-03 23:09
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:4 
这里的i是否有问题?
   for(i=0;;i++)
    {

        s[i]=strlen(a);
        
    }
2019-03-04 05:36
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:4 
char b[81];
b[81] = { '\0' };
看不懂你想干什么
b[81] 已经是未定义行为了,后面“ = { '\0' } ”又是初始化(不是赋值)的操作

2019-03-04 08:47
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
得分:4 
b[81]={'\0'}; // 首先这已经超出了数组的范围,你定义的数组最大下标是80;其次,b[81]访问的是单个元素,不需要用{}来包裹。最后,C++不在这行报错估计是编译器实现的区别,不同的编译器对语法的实现不一样。

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2019-03-04 16:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-493398-1-1.html




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

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