【发布时间】:2011-12-02 05:04:14
【问题描述】:
我这样做了:
int i=1;
sizeof(++i);
cout<<i;
...输出为 1。为什么整数的值没有增加?
我知道这可能是一个愚蠢的问题,但我不知道在哪里可以询问/搜索答案。
【问题讨论】:
-
简短的回答是“因为 sizeof 是一个编译时运算符。结果仅基于参数的 type,而参数本身是 not 已评估。”
我这样做了:
int i=1;
sizeof(++i);
cout<<i;
...输出为 1。为什么整数的值没有增加?
我知道这可能是一个愚蠢的问题,但我不知道在哪里可以询问/搜索答案。
【问题讨论】:
sizeof 由编译器在编译时确定,只有参数的类型很重要。这就是为什么你可以拥有,例如
int *list = malloc(10*sizeof(*list));
即使list 在sizeof 处未初始化。
【讨论】: