一、不同輸出格式會有不同的結果
1.%ld 用于long型別的值,如果系統中int和long大小相同,使用%d就可以,這樣的程式被移植到其他系統(int和long型別的大小不同),
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這個?數字在系統內部存盤的方式是一樣,只不過我們使用了不同的列印方式,所以得到了不同的結果,在待列印的值大于?有符號值的最大值的時候會出現這種情況,
(2)第二行,中的疑問,C編譯器會把short型別自動轉換成int型別的值,為什么呢?
因為int型別被認為是計算機處理整數型別最高效的型別,
(3)?那么這里的h修飾符又有什么作用呢?
使用h修飾可以顯示較大整數被截斷成short型別值的情況,例如?:65537以二進制的形式表示為000000000000010000000000001,使用%hd只會查看后面16位的情況?;
?插曲:
今天晚上裝上了Visual studio 2019,但是寫了一個小程式,就是編譯報錯
?報錯:找不到?..........exe檔案,經過多方求證,搞了半天才搞對,
我們新建一個“空專案”(不是其他的選項哦?!!)
然后創建一個空專案之后,然后右鍵點擊“源檔案”,選擇C++專案,(我們這里可以手動改成C專案,就是?后綴名直接改成.c既可),然后編輯代碼,我們先要點擊生成(build)-生成解決方案(build solution)之后,然后在點擊直接運行就可以正常運行了,如果我們不先點擊?生成解決方法,就會報錯,?
三、原始碼:
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大資料學習視頻禮包

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/9951.html
標籤:C
上一篇:C 實戰練習題目57
下一篇:__fastfail(FAST_FAIL_STACK_COOKIE_CHECK_FAILURE)出錯,堆疊 Cookie 檢測代碼檢測到基于堆疊的緩沖區溢位問題;
