#include<stdio.h>
int main()
{
int x;
int *ptr;
ptr = &x;
*ptr = 0;
printf("x= %d\n", x);
printf("*ptr= %d\n", *ptr);
*ptr = 5;
printf("x= %d\n", x);
printf("*ptr= %d\n", *ptr);
(*ptr) ;
printf("x= %d\n", x);
printf("*ptr= %d\n", *ptr);
return 0;
}
會計。優先括號將首先被簡化, 因此它將是后增量:(
(*ptr) 問題的第三部分)
值應該是 5,因為它是后增量運算子,即它將首先分配值然后遞增。在這種情況下,它也應該首先分配值然后遞增。但是答案是
6
uj5u.com熱心網友回復:
int *ptr;
(*ptr) ;增加指標參考的物件的值。結果是一樣的*ptr = 1;*ptr ;增加指標本身。結果是一樣的ptr = 1;
值應該是 5,因為它是后增量運算子,即它將首先分配值然后遞增。
不,在這種情況下,序列點是分號。所以這一行簡單地增加了ptr.
要查看您想要的內容,您需要直接在更復雜的運算式、回圈或函式呼叫中使用后增量運算子。
printf("*ptr= %d\n",(*ptr) );
printf("*ptr= %d\n",x);
uj5u.com熱心網友回復:
(*ptr) ; // increment the value (to 6)
// other stuff
printf( .... // print the value
(后)增量基本上發生在獲取要列印的值之前。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/506471.html
