[英]Post-increment operator in C
我編寫這個C代碼時,我隨便編碼:
#include <stdio.h>
int main()
{
int i;
i = 10;
printf("i : %d\n",i);
printf("sizeof(i++) is: %d\n",sizeof(i++));
printf("i : %d\n",i);
return 0;
}
當我運行代碼時,我得到的結果是,
i : 10
sizeof(i++) is: 4
i : 10
我對這個結果感到困惑,因為我預計i ++內的sizeof運算符會增加i。 但似乎沒有。 因此,出於好奇,我寫了以下程序:
#include <stdio.h>
int add(int i)
{
int a = i + 2;
return 4;
}
int main()
{
int i;
i = 10;
printf("i : %d\n",i);
printf("sizeof(i++) is: %d\n",add(i++));
printf("i : %d\n",i);
return 0;
}
對於這個程序,輸出是:
i : 10
sizeof(i++) is: 4
i : 11
現在我越來越困惑了。
對不起,如果這是一個noob問題(我是)但我真的不明白甚至如何谷歌這樣的問題!
為什么這兩個程序中i的值不同? 請幫忙!
sizeof()
不是運行時函數。 它只是給出變量的大小或函數返回值的大小。
所以在第一個例子中,你只是將一個后增量運算符的結果值的大小放在一個整數... 4個字節的整數上。
在您的示例中,您只是打印返回4的方法的返回值,然后變量遞增,並打印11。
sizeof
不評估其操作數(VLA類型情況除外)。
這意味着sizeof(*(T*)(NULL))
與sizeof(T)
相同,完全有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.