2014-09-13 19 views
1

在調用printf函數的同時,我們將short的長度修飾符作爲h?h用作長度修飾符的縮寫是什麼?

對於如

short s=10; 
printf("%hd",s); 

什麼的H表示?是否有任何具體的理由給名稱?

問這個問題的動機是標準選擇了l for long.因爲長時間以l開頭就沒問題。

可能長h代表什麼?

+5

也許有一半?因爲's'意味着別的什麼,你還會用什麼其他的字母? – 2014-09-13 10:40:49

+0

@RetiredNinja我aggree – 2014-09-13 10:42:22

+2

沒有必要在printf中使用'%hd'或'%hhd'因爲所有小於int的類型都必須遵循var_arg函數中的默認升級規則,因此無論如何它都會被提升爲int http:// en .cppreference.com/w/cpp/io/c/fprintf – 2014-09-13 11:02:13

回答

1

是的,通常的理解是'h'表示'半'或'半字',就像'l'表示'長'或'雙字'一樣。它實際上意味着'短',當然''已經被採納了。

它在printf中非常有用,因爲它可以確保在打印之前將該值返回到一個簡短值。在這種情況下,對於unsigned short int,'%hd'不如'%hu'有用。

它在scanf中也很有用,以確保只有正確的位數被存儲到一個短變量中。 但請參閱What is the purpose of the h and hh modifiers for printf?

相關問題