我发现了一些奇怪的东西,我测试了这段代码:
#include <iostream>
using namespace std;
int main() {
int i=0, a[5];
cin>>a[i++]>>a[i++]>>a[i++];
for(int j=0; j<i; j++){
cout<<a[j]<<endl;
}
}
Run Code Online (Sandbox Code Playgroud)
有了这个输入:
1
2
3
Run Code Online (Sandbox Code Playgroud)
并将输入反转为:
3
2
1
Run Code Online (Sandbox Code Playgroud)
我认为它的输出应该与此代码相同:
#include <iostream>
using namespace std;
int main() {
int i=0, a[5];
cin>>a[i++]; cin>>a[i++]; cin>>a[i++];
for(int j=0; j<i; j++){
cout<<a[j]<<endl;
}
}
Run Code Online (Sandbox Code Playgroud)
以前有人经历过这个吗?谢谢.
-编辑-
谢谢大家的答案!!!
%{$var}
和之间有什么区别%$var
?我试过这段代码,但是有错误:
每个引用都是test.pl第21行的实验.每个引用的参数类型必须是test.pl第21行的非反射hashref或arrayref.
use feature 'say';
%HoH = (
1 => {
husband => "fred",
pal => "barney",
},
2 => {
husband => "george",
wife => "jane",
"his boy" => "elroy",
},
3 => {
husband => "homer",
wife => "marge",
kid => "bart",
},
);
for ($i = 1; $i <= 3; $i++) {
while ( ($family, $roles) = each %$HoH{$i} ) {
say "$family: $roles";
}
}
Run Code Online (Sandbox Code Playgroud)
但是这段代码运行正常:
use feature 'say';
%HoH = (
1 …
Run Code Online (Sandbox Code Playgroud) 据我所知,C++使用Ampersand(&)来制作Pass By Reference函数.但我刚测试了这段代码,我想知道为什么第二个函数与第一个函数看起来相似.现在似乎第二个功能是Pass by Reference Function.
#include <iostream>
using namespace std;
void f1(int (&b)[5])
{
b[0]=1;
}
void f2(int b[5])
{
b[1]=2;
}
int main()
{
int a[5];
f1(a);
f2(a);
cout<<a[0]<<endl;
cout<<a[1]<<endl;
}
Run Code Online (Sandbox Code Playgroud)
输出:
1
2
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下这个吗?谢谢.