我在查詢時遇到了一些基本的c問題。我嘗試下面的代碼來解決它:爲什麼遞增一個浮點數的結果與預期不同?
#include<stdio.h>
typedef float mytype;
mytype q=1;
mytype *x=&q;
mytype *y=&q;
mytype *z=&q;
mytype *a=&q;
mytype *b=&q;
mytype *arr[5]={x,y,z,a,b};
int main()
{
printf("********************");
//printf("%u\n",sizeof(int*));
printf("%u\n",sizeof(double*));
printf("********************\n");
for(int i=0;i<5;i++)
{
printf("%p\n",arr[i]);
printf("%p\n",arr[i]+1);
printf("***********");
}
}
當我執行它,浮動的sizeof指針爲8個字節,但增加它導致的是隻有4個字節的地址away.Can有人請解釋爲什麼會這樣?
「當我執行它,漂浮的sizeof指針」 - 你沒有得到的大小一個'浮點'指針!爲什麼指針的大小應該與它指向的對象的大小有關?有很多錯誤的假設它代碼很少。 – Olaf
'size_t'的正確格式說明符是'%zu'而不是'%u'。 –