1、不一樣輸出格式會有不一樣的結果git
1.%ld 用於long類型的值,若是系統中int和long大小相同,使用%d就能夠,這樣的程序被移植到其餘系統(int和long類型的大小不一樣)。github
2.一樣x和o前面也能夠使用l來修飾。小程序
3.對於short類型,前面就是使用h來當前綴。微信
4.h和l前綴均可以和u一塊兒連用,用於表示無符號的類型。例如:%lu學習
/*print2.c --更多printf()的特性*/ #include<stdio.h> int main(void) { unsigned int un = 300000000;/*int爲32位和short爲16位的系統*/ short end = 200; long big = 65537; long long verybig = 1234567890642; printf("un= %u and not %d \n", un, un); printf("end = %hd and %d \n", end, end); printf("big = %ld and not %hd", big, big); printf("verybig = %lld and not %ld \n", verybig, verybig); return 0; }
分析:大數據
(1)從上面生成的數據來看,第一行中是由於30000000這個數字在系統內部存儲的方式是同樣,只不過咱們使用了不一樣的打印方式,因此獲得了不一樣的結果。在待打印的值大於有符號值的最大值的時候會出現這種狀況。ui
(2)第二行,中的疑問,C編譯器會把short類型自動轉換成int類型的值,爲何呢?spa
由於int類型被認爲是計算機處理整數類型最高效的類型。.net
(3)那麼這裏的h修飾符又有什麼做用呢?code
使用h修飾能夠顯示較大整數被截斷成short類型值的狀況,例如:65537以二進制的形式表示爲000000000000010000000000001,使用%hd只會查看後面16位的狀況;
插曲:
今天晚上裝上了Visual studio 2019,可是寫了一個小程序,就是編譯報錯
報錯:找不到..........exe文件,通過多方求證,搞了半天才搞對。
咱們新建一個「空項目」(不是其餘的選項哦!!)
而後建立一個空項目以後,而後右鍵點擊「源文件」,選擇C++項目,(咱們這裏能夠手動改爲C項目,就是後綴名直接改爲.c既可),而後編輯代碼,咱們先要點擊生成(build)-生成解決方案(build solution)以後,而後在點擊直接運行就能夠正常運行了,若是咱們不先點擊生成解決方法,就會報錯。
3、源碼:
D8_1_print.c
https://github.com/ruigege66/CPrimerPlus/blob/master/D8_1_print.c
D7_toobig.c
https://github.com/ruigege66/CPrimerPlus/blob/master/D7_toobig.c
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關注微信公衆號:傅里葉變換,我的帳號,僅用於技術交流,後臺回覆「禮包」獲取Java大數據學習視頻禮包