C ++:在for循环中使用sizeof()运算符递增一个int变量仅能运行一次?

时间:2019-06-25 08:07:49

标签: c++

我试图在for循环中使用sizeof()运算符来增加我的int变量,该循环运行两次迭代。

我正在Turbo编译器上运行此代码。

#include<iostream.h>
#include<conio.h>
void main(){

    int *p, c = 0;

    p = new int[4];

    for(int i = 0; i < 2; i++)
        c = c + sizeof(p + i);

    cout<<c;

    getch();
}
我希望输出为8,因为在第一次迭代中它将在c中存储4,而在第二次迭代中它将仅增加一倍,但是令人惊讶的是输出仅为4,我不知道为什么。我也尝试在for循环内打印,但它确实确实运行了两次而不是一次。

1 个答案:

答案 0 :(得分:6)

p + i是指针算术表达式。在您的情况下,其类型为int*。因此,sizeof(p + i)sizeof(int*)相同。

因此,您观察到的输出与sizeof(int*)为2一致,我不相信,尽管您可以进行细微的检查。

如果您的旧编译器有错误,并且将表达式评估为sizeof(int),这不会令我感到惊讶。 Turbo C ++早已不复存在。