這段代碼怎么來的
#include <stdio.h>
int main(){
int y=42;
int *p=&y;
(*p) ;
printf("%d\n",*p);
return 0;
}
輸出 43,正如預期的那樣,但是這段代碼
#include <stdio.h>
int main(){
int y=42;
int *p=&y;
printf("%d\n",(*p) );
return 0;
}
輸出 42?
uj5u.com熱心網友回復:
x 是后增量運算子。它遞增呼叫它的變數,但計算為遞增之前的值。
將printf陳述句分成兩個陳述句可能會更清楚:
int pBeforeIncrement = (*p) ; // After this statement, pBeforeIncrement 1 == p
printf("%d\n", pBeforeIncrement);
uj5u.com熱心網友回復:
printf("%d\n",(*p) );
它在將值傳遞給列印后增加值。它被稱為后增量。
printf("%d\n", (*p));
它在將值傳遞給列印之前增加值。它被稱為預增量。
int main(){
int y=42;
int *p=&y;
printf("(*p) = %d\n",(*p));
printf("(*p) = %d\n",(*p) );
printf("(*p) = %d\n",(*p));
printf(" (*p) = %d\n", (*p));
return 0;
}
https://godbolt.org/z/Ke5Y6e3q8
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/385071.html
