【问题标题】:C++: int i; sizeof(++i); ... i does not increase in value? [duplicate]C++:int i;大小(++i); ...我不增值? [复制]
【发布时间】:2011-12-02 05:04:14
【问题描述】:

我这样做了:

int i=1;
sizeof(++i);
cout<<i;

...输出为 1。为什么整数的值没有增加?

我知道这可能是一个愚蠢的问题,但我不知道在哪里可以询问/搜索答案。

【问题讨论】:

  • 简短的回答是“因为 sizeof 是一个编译时运算符。结果仅基于参数的 type,而参数本身是 not 已评估。”

标签: c++ increment


【解决方案1】:

sizeof 由编译器在编译时确定,只有参数的类型很重要。这就是为什么你可以拥有,例如

int *list = malloc(10*sizeof(*list));

即使listsizeof 处未初始化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-06
    • 2020-11-25
    • 2017-08-11
    • 1970-01-01
    • 2020-05-10
    • 2011-09-22
    • 2013-04-24
    • 2015-08-26
    相关资源
    最近更新 更多