我试图在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循环内打印,但它确实确实运行了两次而不是一次。
答案 0 :(得分:6)
p + i
是指针算术表达式。在您的情况下,其类型为int*
。因此,sizeof(p + i)
与sizeof(int*)
相同。
因此,您观察到的输出与sizeof(int*)
为2一致,我不相信,尽管您可以进行细微的检查。
如果您的旧编译器有错误,并且将表达式评估为sizeof(int)
,这不会令我感到惊讶。 Turbo C ++早已不复存在。