一、不同輸出格式會有不同的結果 1.%ld 用於long類型的值,如果系統中int和long大小相同,使用%d就可以,這樣的程式被移植到其他系統(int和long類型的大小不同)。 2.同樣x和o前面也可以使用l來修飾。 3.對於short類型,前面就是使用h來當首碼。 4.h和l首碼都可以和u ...
一、不同輸出格式會有不同的結果
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大數據學習視頻禮包