一、使用資料型別的雷區
- 不要賦值給不相關的變數
- 例如:
int a = 2.36這條陳述句,會直接給a賦值2,而不會進行四舍五入,原理是直接截斷小數點后面的數字, - 例如:
float b = 3.1415926536,C中保證了float型別的前6位精度,會損失精度,應該使用double來進行賦值, - 許多公司內部會在變數名中體現變數型別,例如:int型別的一般用
i_當前綴,unsigned short會使用us_當前綴,
二、引數與陷阱
- C語言會通過函式原型機制檢查函式呼叫時引數的個數和型別是否正確,但是
printf()和scan()不起作用,因為這兩個函式的引數是可變的,
#include<stdio.h> int D14_1_badcount(void) { int n = 4; int m = 5; float f = 7.0f; float g = 8.0f; printf("%d\n", n, m); printf("%d %d %d\n", n); printf("%d %d\n", f, g); return 0; }
運行結果: 
- 如上運行結果,第一個printf只列印出來一個引數,后面的引數沒有列印出來;第二個printf第一個顯示對了,但是后面兩個因為沒有給出引數的取值,因此計算機就隨機的嫻熟出來資料;第三個printf因為型別匹配不上,因此也是隨即列印了兩個數字,float型別不會自動轉化為int型別,
三、轉義序列示例
#include<stdio.h> #pragma warning(disable:4996) int D14_2_escape(void) { float salary; printf("\aEnter your desired monthly salary:"); printf("$___________\b\b\b\b\b\b\b\b"); scanf("%f", &salary); printf("\n\t$%.2f a month is %0.2f a year", salary, salary * 12.0); printf("\rGee!\n"); return 0; }
運行結果: 
- \a表示一聲計算機警報
- 第二條列印陳述句,就是讓游標向前移動8個下劃線(因為有8個\b),然后在這里鍵入數字即可;
- 第三條陳述句,先換行,再來一個tab制表符,然后列印那句話;
- 第四條陳述句,\r代表先回到這一行的首部,然后列印Gee!最后游標落在下一行
三、屬性輸出
1.printf什么時候把輸出發送到螢屏呢?
- 最初,先發送到緩沖區(buffer)的中間存盤區域,然后緩沖區的內容在不斷的被發送到螢屏上,
- 什么時候發送到螢屏呢?C語言規定:當緩沖區滿、遇到換行符或者需要輸入的時候
從緩沖區把資料發送到螢屏或者檔案被稱為重繪緩沖區,
- 舊式編譯器遇到
scanf函式也不會重繪緩沖區 - 所以有時經常寫
\n也是一種習慣,
小結:
(1)C語言支持混合資料型別運算式,但是會進行自動型別轉換,
(2)_Bool是一種無符號型別;
三、原始碼:
- D14_1_badcount.c
- D14_2_escape.c
- https://github.com/ruigege66/CPrimerPlus/blob/master/D14_1_badcount.c
- https://github.com/ruigege66/CPrimerPlus/blob/master/D14_2_escape.c
- CSDN:https://blog.csdn.net/weixin_44630050
- 博客園:https://www.cnblogs.com/ruigege0000/
- 歡迎關注微信公眾號:傅里葉變換,個人賬號,僅用于技術交流,后臺回復“禮包”獲取Java大資料學習視頻禮包

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/4998.html
標籤:C
上一篇:微控制器新聞速遞STM32
下一篇:二叉樹陣列實作
