回答
sizeof()
函數不會評估括號中的內容:它會查看類型並返回大小。這是絕對安全:
char *ptr = NULL; // NULL ponter!
printf("%d", sizeof(*ptr));
它將返回1
,因爲它不必計算表達式就知道答案了。
「這非常安全:」 - >不是真的。 sizeof'的結果類型是'size_t'。匹配的'printf()'說明符是'「%zu」',而不是'「%d」'。 – chux
因爲getchar()
返回類型是int
而不是char
。 sizeof(int)
在您的平臺上是4。
此外,您應該使用%zu
來打印size_t
值。使用不正確的格式說明符在技術上是undefined behaviour。
我期望的是,1.類型輸入。 2.讀取輸入並返回輸入值。 3.評估sizeof值4.打印sizeof值。
但是第一步從未發生。爲什麼不邁出第一步?
因爲除極少數例外情況,sizeof
運算符不會評估其操作數。您的使用情況不是例外情況之一。未評估getchar()
表示getchar()
未被調用。
無論如何,我不確定你期望從你的代碼中得到什麼。即使調用getchar()
爲,結果總是具有相同的類型(int
),它不依賴於輸入。
也請關注@P.P.的評論。您的printf()
格式與正在打印的數據類型不匹配,size_t
。正如他所觀察到的,printf()
調用的結果是未定義的行爲。
在C中,sizeof運算符僅在運行時對可變大小數組(VLA)進行評估。在所有其他情況下,操作員不會評估操作數。它推導出表達式的類型並返回推導類型的對象的大小。
- 1. 爲什麼不按預期工作set_time_limit?
- 2. Javascript未按預期工作,爲什麼?
- 3. 爲什麼setTimeout不按預期工作?
- 4. 爲什麼不按預期.when.apply $工作
- 5. 爲什麼memset不按預期工作?
- 6. 爲什麼:lt()不按預期工作?
- 7. incPixel爲什麼不按預期工作?
- 8. 爲什麼EF預加載包括不按預期工作?
- 9. 爲什麼QMultiMap的查找操作無法按預期工作?
- 10. 爲什麼這個string.search不能按預期工作?
- 11. Maven-scm插件:爲什麼scmRevision無法按預期工作?
- 12. 這些正則表達式爲什麼不按預期工作?
- 13. 爲什麼正則表達式沒有按預期工作?
- 14. 爲什麼該查詢不能按我的預期工作?
- 15. 爲什麼PUN不回撥? ProtonNetworking沒有按預期工作
- 16. 爲什麼返回-1不能按預期工作
- 17. 爲什麼要清楚:沒有按預期工作
- 18. 爲什麼angular.isNumber()不能按預期工作?
- 19. 爲什麼.on()按預期在jquery中不能正常工作?
- 20. 爲什麼不是「<= 1」按預期工作?
- 21. 爲什麼stopifnot不能按預期工作?
- 22. 爲什麼std :: nothrow在gcc(4.9)中按預期工作?
- 23. 爲什麼此規範不能按預期工作?
- 24. 爲什麼CSS:不是僞類不能按預期工作?
- 25. 爲什麼indexOf無法按預期工作?
- 26. 爲什麼sched_setaffinity在kthread上按預期工作
- 27. 爲什麼pygame.key.get_pressed按預期工作不正常?
- 28. 爲什麼此密碼檢查不能按預期工作?
- 29. 爲什麼我的情況沒有按預期工作?
- 30. 爲什麼此代碼無法按預期工作?
我得到這個:[ICS @蒸汽男孩ics_client] $ gcc的-o臨時temp.c [ICS @蒸汽男孩ics_client] $ ./temp 4 [ICS @蒸汽男孩ics_client] $什麼平臺是你嗎? – octopusgrabbus
你也應該在你的格式化字符串的末尾添加一個'\ n'。 –