sizeof

轉自http://blog.sina.com.cn/s/blog_4762d6850100y1kl.html
#include <stdio.h>

int main(char *argv[], int *argc)
{
 int i=3;
 int j;
 
 j = sizeof(++i+ ++i);
 
 printf("i=%d j=%d", i ,j);
}

上述程序,爲什麼打印出來的i=3呢, 我理解的是5 

解答::

根據C99規範, sizeof是一個編譯時刻就起效果的運算符,在其內的任何運算都沒有意義, j = sizeof(++i+++i); 在編譯的時候被翻譯成 j=sizeof((++i+++i的數據類型)) 也就是 j = sizeof(int); 也就是 j= 4; (32bit系統,如果是16位系統,則j=2) 然後纔會繼續編譯成最終的程序,當然在最終程序執行的時候,自然不會執行任何++i了。
發佈了1 篇原創文章 · 獲贊 5 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章