5

sizeofのオペランドとして評価される式はありますか。sizeofの可変長オペランドの場合、式が評価されることがわかりました。しかし、私は例を作ることができません、私は以下のコードを書きました、

int a[]={1,2,3};
printf("%d",sizeof(a[1]++));
printf("%d\n",a[1]);

しかし、ここで私は出力式から観察しましたがa[1]++評価していません。例を作る方法??

4

1 に答える 1

6

配列は可変長配列ではありません。可変長配列は、サイズが定数式ではない配列です。たとえば、dataは次の可変長配列です。

int i = 10;
char data[i];

オペランドを評価したコードの例を見るには、次のsizeofようにしてみてください。

#include <stdio.h>

int main(void)
{
    int i = 41;
    printf("i: %d\n", i);
    printf("array size: %zu\n", sizeof (char[i++]));
    printf("i now: %d\n", i);
    return 0;
}

それは印刷します:

i: 41
array size: 41
i now: 42
于 2012-07-10T19:55:51.327 に答える