#include <iostream>
using namespace std;
void reset(int *a, int *b){
int sum = *a + *b;
*a = (sum / 2.0 - sum / 2) >= 0.5 ? sum / 2 + 1 : sum / 2;
*b = *a;
cout << hex << (void *)a<<endl;
cout << hex << b<<endl;
}
int main(){
int a, b;
cin >> a >> b;
reset(&a, &b);
cout << a <<' '<< b << endl;
}
Run Code Online (Sandbox Code Playgroud)
我使用代码重置两个变量,但在打印变量指针后,数据发生了变化.当我推荐两个cout语句时,它可以工作.看起来像这样:


您应该返回dec,因为您将输出更改为hex
#include <iostream>
using namespace std;
void reset(int *a, int *b){
int sum = *a + *b;
*a = (sum / 2.0 - sum / 2) >= 0.5 ? sum / 2 + 1 : sum / 2;
*b = *a;
cout << hex; //set hex for output stream
cout << (void *)a<<endl;
cout << b<<endl;
cout << dec; // return to dec system
}
int main(){
int a, b;
cin >> a >> b;
reset(&a, &b);
cout << a <<' '<< b << endl;
}
Run Code Online (Sandbox Code Playgroud)