簡體   English   中英

C ++:在for循環中使用sizeof()運算符遞增一個int變量僅能運行一次?

[英]C++: Incrementing an int variable with sizeof() operator inside a for loop only works once?

我試圖使用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循環內打印,但它確實運行了兩次,而不是一次。

p + i是指針算術表達式。 在您的情況下,其類型為int* 因此sizeof(p + i)sizeof(int*)

因此,您觀察到的輸出與sizeof(int*)為2一致,我不相信,盡管您可以進行細微的檢查。

如果您的舊編譯器有錯誤,並且將表達式評估為sizeof(int) ,這也不會令我感到驚訝。 Turbo C ++早已一去不復返了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM