C++程式設計過程中小知識點記錄(持續更新)
阿新 • • 發佈:2022-02-04
在學習C++的過程中,會碰到很多自己不熟悉的細碎的知識點,這裡記錄一下方便後續覆盤(持續更新);
1.對於scanf賦值語句而言,除了%c的格式符號外,其他的格式符號(如%d)的輸入是以空白符結尾的(即空格、換行/回車)為結束判斷標誌。
2.scanf的格式符號為%c時,可以讀入空格和換行符。
3.printf與scanf的格式符一般相對應。但對於double型別變數,printf時為%f,scanf時為%lf。
4.有一些編譯器中可能不支援gets(a)函式,此時可以用fgets函式解決。
#include<cstdio> int main() { char str[100]; fgets(str,100,stdin);//同樣換行符也會讀入 } /* #include<cstdio> int main() { char str[100]; gets(str);//同樣換行符也會讀入 } */
5.~操作符的含義是按位取反(二進位制位)。scanf函式的返回值是輸入值的個數,若沒有輸入值就是返回-1,-1的二進位制程式碼按位取反結果是0。在一些習題中,經常會遇到輸入資料不止一組的情況,此時利用scanf的此特性十分方便,舉例如下:
//即當沒有輸入資料時,程式就會自動終止
//在寫題目時十分有用
int n;
while(~scanf("%d",&n))//等價於scanf("%d",&n)!=EOF
{
//
}
6.對於結構體而言,兩個型別相同的結構體變數是可以進行相互賦值的,舉例如下:
struct Matrix { int value; int col; }; int main() { Matrix A; Matrix B; A.value = 0; A.col = 1; B.value = 2; B.col = 3; //A與B進行交換 Matrix C; C = A; A = B; B = C }
未完待續...............................................................................