C++ 数组的值在以下c++;密码?
编译以下程序时,如果break float而break,则输出为C++ 数组的值在以下c++;密码?,c++,arrays,function-call,C++,Arrays,Function Call,编译以下程序时,如果break float而break,则输出为 #include<iostream> using namespace std; string s[5]={"if","int","float","while","break"}; string & blast(int i){ return s[i];} int main() { for (int i =
#include<iostream>
using namespace std;
string s[5]={"if","int","float","while","break"};
string & blast(int i){ return s[i];}
int main()
{
for (int i = 0; i < 5; i++ )
if( i % 3 == 1 )
blast( i ) = s[ 5-i ];
for (int i = 0; i < 5; i++ )
cout << s[ i ] << " ";
cout<<endl;
return 0;
}
但产出与此不符
我不明白这件事。。
请帮帮我。正如你自己写的,当
i
等于1
blast[1]= s[4] = "break"
so, s[1] = "break"
因此s[1]
包含字符串“break”
。之后,数组不包含字符串“int”
。然后当i
等于4
blast[4]= s[4] = s[1] = "break"
提示:如果分配给可变引用,会发生什么情况?
string&blast(inti)
返回对数组中字符串的引用,然后将新字符串分配给该字符串,例如blast(i)=s[5-i]
与s[i]=s[5-i]相同
此外,如果您将代码隔开一点,它的可读性将大大提高(特别是对于老年人来说),例如for(inti=0;i<5;i++)
和if(i%3==1)
,等等。您可能想要std::swap(blast(i),s[5-i])代码>?请注意适当的格式。这样代码的可读性就会大大提高。我为你们修正了换行符和缩进,但你们的括号仍然遵循不一致的模式。在开始括号之后或结束括号之前使用空格是很不寻常的,但我不太在乎是否至少保持它的一致性(要么两者都保持一致,要么不保持一致,然后所有对都保持一致)。应始终放置运算符周围的空格。关于大括号:我建议至少在表达式包含两行以上(如编辑后的第一个for循环)时放置大括号,即使不需要也应放置大括号。对于if-else链的所有块,如果至少有一个需要,则应放置大括号。有一些编码约定(比如MISRA)总是强制使用大括号,这使得您的代码健壮。G反对写得不好的宏(承认不是很有意义,但可能类似于增量(X,Y)++X;++Y;
)或忘记将它们放在添加更多表达式上。
blast[4]= s[4] = s[1] = "break"