C++ C++;:在for循环中使用sizeof()运算符递增int变量只起一次作用?

C++ C++;:在for循环中使用sizeof()运算符递增int变量只起一次作用?,c++,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;

我试图在运行两次迭代的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();
}
#包括
#包括
void main(){
int*p,c=0;
p=新整数[4];
对于(int i=0;i<2;i++)
c=c+sizeof(p+i);

cout
p+i
是一个指针算术表达式。在您的例子中,它的类型是
int*
。因此
sizeof(p+i)
sizeof(int*)
相同

因此,您观察到的输出与
sizeof(int*)
为2是一致的,我不相信这一点,尽管您可以简单地检查一下


<> P>如果你的旧编译器是BGGY,并且将表达式作为<代码> sieof(int)< /> >进行评价,我就不会感到惊讶。Turbo C++已经很久没有了。

*……我不相信。-相信它。他使用的是在16位DOS上运行的小内存模型Turbo C++,近指针是16位(严重)令人惊讶的是,我也在我的研究生院……1991(也很认真)。那些日子是这样的。我还记得Borland C++ 2左右是我第一次“认真”的。当我使用Turbo C++时,C++的环境必须是1989左右。然而,我在这里学到了很多印度学校仍然使用这些旧工具来学习他们的课程。令人惊讶的是,他们与FreeBSD或咳嗽Linux相比,并不能真正节省资金。不要笑,空间程序也一样。Borland DOS版本是一个在286台机器上运行得非常好的windows之前的juggernaut。你只需要喜欢黄色文本的蓝色背景
:)
@DavidC.Rankin那时我主要使用QEdit。这也是爆炸和行业标准!Wordstar兼容:)想到我职业生涯的第一部分主要办公工具是从80年代末一直持续到90年代的复写纸打字机和实际邮寄的文件(带邮票)。哦,我们编织了一张多么纠结的网……”“我也试着在for循环中打印,我发现它确实运行了两次而不是一次”-但显然决定不使用该版本的代码?在每次迭代中,循环迭代两次的循环中实际打印的内容是什么?相关的,尝试一个过去十年左右制作的工具链。你能解释一下为什么你认为第一次迭代将在
c
中存储4吗?如果我们知道你的推理,我们可以解释这是可怕的,现在有多少人仍然使用Turbo C++。下次,总是用邮政编码来轻松地重现错误。<代码>空main <代码>是不正确的,文件<代码> IOSWATION/COMPUT>没有扩展。除此之外,你应该先声明你想要的东西。没有取消引用指针?代码看起来像是在尝试对指针的内容进行迭代,但没有这样做。