#include <iostream>
using namespace std;
int main() {
int num=10;
int *ptr=NULL;
ptr=#
num=(*ptr) ; //it should increase to 11
num=(*ptr) ; //it should increase to 12 but im getting 10
//if i dont initialize num and just use (*ptr) it gives me 11
cout<<num<<endl;
return 0;
}
我想知道為什么會發生這種情況以及為什么我得到 10 作為輸出。
uj5u.com熱心網友回復:
(*ptr)
增加到num
11 但回傳其先前的值 (10),因為它
是后綴。
因此,使用num = (*ptr)
,您暫時增加到num
11,但隨后(重新)分配給它 10。
uj5u.com熱心網友回復:
為什么會這樣
因為您使用的是post-increment operator而不是pre-increment operator。
替換(*ptr)
為:
num = (*ptr);//uses pre-increment operator
您將在程式結束時獲得 12 作為輸出,可以在此處看到。
替代方案
你也可以只寫(*ptr) ;
而不給num
. 所以在這種情況下,代碼看起來像:
int main() {
int num=10;
int *ptr=NULL;
ptr=#
(*ptr) ; //no need for assignment to num
(*ptr) ; //no need for assignment to num
cout<<num<<endl;
return 0;
}
uj5u.com熱心網友回復:
它是由分配給 num 引起的。 運算子回傳舊值,然后遞增。但是,舊值被分配給 num。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/397893.html
上一篇:位移一個浮點數