[英]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.