用SrLand和Struc++编译C++问题 包括 使用名称空间std; int main { 字符a[5],b[5]; 库特

用SrLand和Struc++编译C++问题 包括 使用名称空间std; int main { 字符a[5],b[5]; 库特,c++,C++,a和b都未初始化。您的程序已初始化。编译器没有义务生成任何特定的内容。任何行为都是可以接受的。您不能用UB对代码进行推理。该程序只是无效/损坏,编译器也没有义务警告您UB btw 至于编译失败:您没有包括定义strcpy和strlen的头。这在中。包括该头,代码应该编译它仍然会被破坏,但它应该编译 像iostream这样的标准库头允许包含其他头,但不需要这样做。因此,在某些系统上,您可能可以不包含头,因为其他系统为您提供了头。但这不是保证,您不应该依赖它。始终显式包含您需要的内容的头d/使用 a

a和b都未初始化。您的程序已初始化。编译器没有义务生成任何特定的内容。任何行为都是可以接受的。您不能用UB对代码进行推理。该程序只是无效/损坏,编译器也没有义务警告您UB btw

至于编译失败:您没有包括定义strcpy和strlen的头。这在中。包括该头,代码应该编译它仍然会被破坏,但它应该编译

像iostream这样的标准库头允许包含其他头,但不需要这样做。因此,在某些系统上,您可能可以不包含头,因为其他系统为您提供了头。但这不是保证,您不应该依赖它。始终显式包含您需要的内容的头d/使用

a和b都未初始化。您的程序已初始化。编译器没有义务生成任何特定的内容。任何行为都是可以接受的。您不能用UB对代码进行推理。该程序只是无效/损坏,编译器也没有义务警告您UB btw

至于编译失败:您没有包括定义strcpy和strlen的头。这在中。包括该头,代码应该编译它仍然会被破坏,但它应该编译


像iostream这样的标准库头允许包含其他头,但不需要这样做。因此,在某些系统上,您可能可以不包含头,因为其他系统为您提供了头。但这不是保证,您不应该依赖它。始终显式包含您需要的内容的头d/use。

strlen和strcpy在标头中声明。一些标准库实现可能包含在中,一些可能不包含。这解释了为什么它可能使用某些设置而不是其他设置进行编译。

strlen和strcpy在标头中声明。一些标准库实现可能包含在中,一些可能不包含。这解释了为什么它可能使用某些设置而不是其他设置进行编译。

尝试使用g++-o测试文件名。cppub如果代码中有UB,您希望从中得到什么?包括您尚未初始化a,因此结果不可预测。这可以解释随机行为。尝试使用g++-o测试文件名。cppub如果代码中有UB,您希望从中得到什么?包括问题是程序的行为,问题是C++编译器在不同系统上的行为,问题不是程序的行为,问题是C++编译器在不同系统上的行为。
char a[5],b[5];
cout<<strlen(a)<<endl;
strcpy(a,b);