作者hth9494 (hth9494)
看板C_and_CPP
標題[問題] C檔與CPP檔執行結果不同
時間Thu Dec 31 17:03:29 2015
大大們好,今天我在練習sizeof函數時遇到奇怪的現象,以下截圖來表示
我的操作過程。
我的程式碼:
#include <stdio.h>
int main(){
printf("%d\n", sizeof('a'));
printf("%d\n", sizeof(char));
getchar();
}
------------------------------以下是步驟--------------------------
1、一開始用cpp檔來存這段程式碼,結果是印出兩個1
http://imgur.com/Wl0FvWh
2、然後我在右邊方案總管的地方,把cpp改成c,結果印出4和1
http://imgur.com/7TixZdb
3、接著我把第二個printf註釋掉,結果印出4,這時還是c檔
http://imgur.com/ZtHWIHS
4、然後一樣的代碼我把c再改成cpp,結果卻是4而不是1
http://imgur.com/GSi9yIS
5、最後我把註釋復原,此時印出兩個1,和一開始的結果一樣
http://imgur.com/OY4Tc21
有兩個問題想請問各位大大
1、用c檔和cpp檔印出sizeof('a')的結果為什麼不一樣呢?那'a'到底多大?
2、為啥同是cpp檔的情況下,印出來的結果一下是1一下是4,可以讓它這樣
變來變去的嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.36.63.50
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1451552611.A.85A.html
→ hth9494: 也預祝大家新年快樂哦~ 12/31 17:05
→ bibo9901: c的sizeof('a') == sizeof(int) 12/31 17:06
→ bibo9901: c++的sizeof('a') == sizeof(char) 12/31 17:07
→ bibo9901: 還有sizeof回傳型態是size_t, printf 裡面要用 %zd 12/31 17:08
→ TobyH4cker: char ch = 'a'; 12/31 20:08
→ TobyH4cker: printf("%d\n", sizeof(ch)); 12/31 20:08
→ TobyH4cker: 3.到4.沒變我猜是因為程式碼沒有修改就沒有重新編譯? 12/31 20:10
→ TobyH4cker: 的確跳過編譯了,你把Source.obj刪除後再build就正確 12/31 20:16