sizeofのオペランドとして評価される式はありますか。sizeofの可変長オペランドの場合、式が評価されることがわかりました。しかし、私は例を作ることができません、私は以下のコードを書きました、
int a[]={1,2,3};
printf("%d",sizeof(a[1]++));
printf("%d\n",a[1]);
しかし、ここで私は出力式から観察しましたがa[1]++
評価していません。例を作る方法??
sizeofのオペランドとして評価される式はありますか。sizeofの可変長オペランドの場合、式が評価されることがわかりました。しかし、私は例を作ることができません、私は以下のコードを書きました、
int a[]={1,2,3};
printf("%d",sizeof(a[1]++));
printf("%d\n",a[1]);
しかし、ここで私は出力式から観察しましたがa[1]++
評価していません。例を作る方法??
配列は可変長配列ではありません。可変長配列は、サイズが定数式ではない配列です。たとえば、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