c陷阱與缺陷_知識點整理
首先是別人的這篇部落格http://blog.csdn.net/famousdt/article/details/7399764
自己覺得漏掉的知識點
1、“0123456789”[i] 這是一種很好的技巧,保證你輸出的字元是0~9之間的,無論什麼字符集
2、
在VS2013編譯器的環境下
unsigned int c;
c=-10;//故意作死
printf("%d\n",c);
cout<<c<<endl;
同是輸出函式,但是上面輸出的是10,而下面的那個卻溢位了
3、自己寫的二分法,發現到最後會死迴圈出不去,後來發現真正的二分法會在二分時把新的start和end定義為middle+1和middle-1,很好地避免了上述的問題,對於這個問題在計算機叢書的《資料結構與演算法分析-c語言描述》裡也有相關的探討
4、
char s1[] = "123456789";
char *s = s1;
cout << sizeof(s1) << endl;
cout << sizeof(s) << endl;
一個輸出的是字串長度,一個輸出的是自己的長度,在這時指標和陣列名不等價
5、
兩個printf列印出來的東西是不一樣的,上面的那個會把s當作格式控制語句輸出,而下面的那個會按字串輸出s6、三個print:printf,fprintf,sprintf
prinf是大家都用的,但是不能說一定完全會用;fprintf用於輸出到指定檔案,printf(something)相當於fprintf(stdout,something);sprintf()是用於整理字串(個人理解),比如
char s[50];
int a=2,b=3;
sprintf(s,"%d hello world %d",a,b);
這樣的s就是就是"2 hello world 3"
7、格式控制,精度控制,域寬.......
%d,%s,%f,%u(視為無符號整數,不要用於列印char型別的字元),%o(八進位制),%x或者%X(十六進位制列印,大小寫決定了十六進位制的a,b,c,d,e,f,g是大寫還是小寫),%g或者%G用於控制列印出佔位最少的那種格式,%e或者%E(用科學技術法的方式列印字元);
%ld,%lo,%lx,%lu用於宣告我們要列印的long型的;
%5d(若列印的數字只有兩位的話,會在前面添3個空格,不用擔心位數太多會被截斷),甚至可以使用“%m%”這樣來控制輸出(m代表的是一個常數,比如m=5,那程式碼應該寫作%5%);
對於%.5d這樣的格式,如果列印的數是10,那麼列印出來的是:00010,也就是說位數不足會自動補0,這種格式控制對於%d,%o,%x,%u都有效;
對於%f,%e,%E,使用%.5f(%.mf)這種格式是用來控制小數點精度的;
對於%g,使用%5g(%mg)是用來控制輸出有效位置精度的;
對於%s,假設對於“hello world”這個字串,使用%.5s列印出“hello”,使用%.20s則無影響;
對於%c和%%,上述的用法無效;
使用‘-’、'+'和' ',比如:
printf("%-5d",2)
會列印為“2 ”(四個空格,左對齊),也就是說'-'用於左對齊
printf("%+d &+d",2,-2)
輸出是:+2 -2,也就是說'+'用於強制列印符號
printf("% d\n",-2);//中間有個空格,請注意
printf("% d\n",2);
會發現輸出是對齊的,也就是說' '用於對正數列印空格來控制對齊;‘#’用於對字元進行微調,細節太多
float a = 2.333;
printf("%*.*f", 6, 2, a);
這樣相當於printf("%6.2f",a);但是由於格式控制的引數都位於外部,所以可以輕鬆地用變數或巨集定義來調整所有輸出的格式;printf("%*%",n);會列印n-1個空格,然後才是%;
還有兩個控制符%p和%n,新增的,百度就知道是什麼了
//如果個人還有相關感悟的話,會把這些感悟繼續加上去。。。。
//如果有錯,還望指正
相關文章
- 《C缺陷與陷阱》讀書筆記筆記
- c語言-記錄閱讀《c缺陷與陷阱》C語言
- Runtime知識點整理
- JavaScript知識點整理JavaScript
- MQTT知識點整理MQQT
- CANFD知識點整理
- String知識點整理
- 原生JS知識點整理JS
- Flow 常用知識點整理
- C++基礎知識整理C++
- Koa 框架常用知識點整理框架
- PHP 易錯知識點整理PHP
- Servlet基礎知識點整理Servlet
- vue知識點整理(轉發)Vue
- struts2知識點整理
- jQuery面試知識點整理jQuery面試
- React入門知識點整理React
- 整理:iOS開發知識點iOS
- 【整理】JVM知識點大梳理JVM
- MySQL 叢集知識點整理MySql
- c++知識點C++
- FPGA數碼管知識點整理FPGA
- Java容器相關知識點整理Java
- Oracle 選擇題知識點整理Oracle
- python中pandas的知識點整理Python
- C++基本知識點C++
- HTML DOM 知識點整理(一)—— Document物件HTML物件
- Vue 面試中常問知識點整理Vue面試
- java框架之Hibernate框架知識點整理。Java框架
- React學習筆記知識點整理React筆記
- PHP 面試知識點整理歸納PHP面試
- Spring和Springboot相關知識點整理Spring Boot
- 前端面試知識點目錄整理前端面試
- 自己整理的php面試知識點PHP面試
- 機器學習知識點整理(三)機器學習
- 【C++】 C++知識點總結C++
- C++引用全部知識點C++
- C陷阱和缺陷,必須知道的495個C語言問題C語言
- 《微信小程式開發 入門與實踐》知識點整理微信小程式