gpt4 book ai didi

c++ - 第一次计算后的错误值

转载 作者:行者123 更新时间:2023-11-27 23:39:48 25 4
gpt4 key购买 nike

我正在制作一个从 C++ 开始的测试程序:)

第一次打印后显示错误值

enter image description here

这是代码(很简单)

#include "pch.h"
#include <iostream>
#include <Windows.h>
using namespace std;

int main()
{
int varInt = 123456;
char varString[] = "DefaultString";
char arrChar[128] = "Long char array right there ->";
int * ptr2int;
ptr2int = &varInt;
int ** ptr2ptr;
ptr2ptr = &ptr2int;
int *** ptr2ptr2;
ptr2ptr2 = &ptr2ptr;

while(1){
cout << "Process ID: " << GetCurrentProcessId() << endl;

cout << "varInt (0x" << &varInt << ") = " << varInt << endl;
cout << "varString (0x" << &varString << ") = " << varString << endl;
cout << "varChar (0x" << &arrChar << ") = " << arrChar << endl;

cout << "ptr2int (0x" << hex << &ptr2int << ") = " << ptr2int << endl;
cout << "ptr2ptr (0x" << hex << &ptr2ptr << ") = " << ptr2ptr << endl;
cout << "ptr2ptr2 (0x" << hex << &ptr2ptr2 << ") = " << ptr2ptr2 << endl;

cout << "Press ENTER to print again." << endl;
getchar();
cout << "-----------------------------------" << endl;
}

return 0;
}

预期的结果是显而易见的,因为代码是按原样发布的:

  • Process ID 是整数,因此应该返回 12704(或任何 int 值)而不是 31a0
  • varInt 它也是整数,应该返回 123456 而不是 1e240

最佳答案

1e240 与十六进制的 123456 相同。第一次迭代将正确打印 123456,但在将 cout 的基本标志设置为十六进制模式后,您需要将其设置回 dec 以在下一个循环中再次打印 123456。

cout << "varInt (0x" << &varInt << ") = " << dec << varInt << endl;

有关文档,请参阅 here

关于c++ - 第一次计算后的错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56189888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com