所以我有一个变量value4,我将其赋值为14,但它表示它的值实际上是2814 ... 但每当我删除一段代码时(我用注释标记它) “从这里开始”和“在这里结束”),这一切都恢复正常。我想知道,导致它的原因是什么?为什么会这样 - 当然,我是如何解决的?
Here's the function:
void incByOne(int &ref) {
++ref;
}
以下是代码:
// *starts here*
int *ptr = new int; // dynamically allocate an integer
*ptr = 28; // put a value in that memory location
if (!ptr) {
std::cout << "Could not allocate memory.";
exit(1);
}
std::cout << *ptr;
delete ptr;
// *ends here*
ptr = 0;
int value4 = 14;
int &ref = value4;
ref = value4;
std::cout << value4 << std::endl;
ref = 99;
std::cout << value4 << std::endl;
incByOne(value4);
std::cout << value4 << std::endl;
答案 0 :(得分:4)
你从行
获得28
std::cout << *ptr;
然后,您从第一行获得14
std::cout << value4 << std::endl;
由于在输出28
的行之后没有打印空格或换行符,因此输出为2814
。
答案 1 :(得分:0)
当您打印值ptr
时,它会打印28
,但您在第一次打印value4
之前不会插入换行符。
这意味着您正在打印
2814
28
- *ptr
14
- value4
打印std::endl
后插入std::cout << *ptr;
,格式应正确。