using namespace std;
void main()
{
char a[]="lhu";
char b[]="li";
char c[]="lhi";
char d[]="lhu";
int i;
i=strcmp(a,b);
cout<<i<<endl;
i=strcmp(a,c);
cout<<i<<'\n';
i=strcmp(a,d);
cout<<i<<'\n';
}
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========
10 个解决方案
#1
因为标准库..
#2
包含头文件是为了声明函数。
c++要求调用函数前必须有声明。
c语言的要求就不这么严格,如果调用一个函数的之前没有声明,编译器会按照调用的方式自动生成一个默认声明,返回int,参数和调用的参数一致。
由于strcmp本来就是返回int的,所以默认声明和正确的声明刚好一致,不会有什么问题。
c++要求调用函数前必须有声明。
c语言的要求就不这么严格,如果调用一个函数的之前没有声明,编译器会按照调用的方式自动生成一个默认声明,返回int,参数和调用的参数一致。
由于strcmp本来就是返回int的,所以默认声明和正确的声明刚好一致,不会有什么问题。
#3
我用g++编译不过,用vs2005可以编译。
看来编译器可以自己决定如何处理这种情况,vs可能包含了常用库函数的声明。
看来编译器可以自己决定如何处理这种情况,vs可能包含了常用库函数的声明。
#4
strcmp能将字符数组与字符串常量进行比较吗?
#5
能~~!
#6
VS的预编译选项?
#7
因为在vs2005中,iostream头文件间接包含了string.h
而在g++中没有
而在g++中没有
#8
这才是正解,还包括了stdio.h
#9
没错,但这种情况下会有一个警告的
#10
还有很多函数,比如swap等等 也能直接使用的
#include <iostream.h>
//using namespace std;
int main()
{
int a, b;
swap(a, b);
return 0;
}
这样就不行了,这些常用函数都被集成到名空间std中了
#include <iostream.h>
//using namespace std;
int main()
{
int a, b;
swap(a, b);
return 0;
}
这样就不行了,这些常用函数都被集成到名空间std中了
#1
因为标准库..
#2
包含头文件是为了声明函数。
c++要求调用函数前必须有声明。
c语言的要求就不这么严格,如果调用一个函数的之前没有声明,编译器会按照调用的方式自动生成一个默认声明,返回int,参数和调用的参数一致。
由于strcmp本来就是返回int的,所以默认声明和正确的声明刚好一致,不会有什么问题。
c++要求调用函数前必须有声明。
c语言的要求就不这么严格,如果调用一个函数的之前没有声明,编译器会按照调用的方式自动生成一个默认声明,返回int,参数和调用的参数一致。
由于strcmp本来就是返回int的,所以默认声明和正确的声明刚好一致,不会有什么问题。
#3
我用g++编译不过,用vs2005可以编译。
看来编译器可以自己决定如何处理这种情况,vs可能包含了常用库函数的声明。
看来编译器可以自己决定如何处理这种情况,vs可能包含了常用库函数的声明。
#4
strcmp能将字符数组与字符串常量进行比较吗?
#5
能~~!
#6
VS的预编译选项?
#7
因为在vs2005中,iostream头文件间接包含了string.h
而在g++中没有
而在g++中没有
#8
这才是正解,还包括了stdio.h
#9
没错,但这种情况下会有一个警告的
#10
还有很多函数,比如swap等等 也能直接使用的
#include <iostream.h>
//using namespace std;
int main()
{
int a, b;
swap(a, b);
return 0;
}
这样就不行了,这些常用函数都被集成到名空间std中了
#include <iostream.h>
//using namespace std;
int main()
{
int a, b;
swap(a, b);
return 0;
}
这样就不行了,这些常用函数都被集成到名空间std中了