轉自 https://blog.csdn.net/ismallboy/article/details/8082514
- 轉義字符;如:\n表示回車+換行等。
- 續行符;這個需要注意一下,在一般的語句中,這個有和沒有事沒關系的,編譯器編譯的時候會自動把兩句連在一起(注意是把第二行原原本本從開始第一個字符(包括空格)連接到前一行上面);看下面例子:
int i = 1; cout<<i++ <<i++<<i++<<endl;
這個是沒錯的。
但是:
int i = 1; cout< <i++<<i++<<i++<<endl;
這個會發生錯誤。
然后這個:
int i = 1; cout<\ <i++<<i++<<i++<<endl;
但是這個也是有問題的。
然后這個:
int i = 1; cout<\ <i++<<i++<<i++<<endl;
這個是沒有問題的!
另外還有一個需要注意的地方,上面的續行符是用在某個語句比較長的時候,用來續行的,這樣會好看點。還有一作用就是——系統規定,宏定義的時候,代替的語句很長或者是個語句塊甚至函數的時候,就需要用到這個反斜杠了!看下面:
這玩意兒有個正式的名稱叫做續行符,在普通代碼行后面加不加都一樣(VC是自動判斷續行的),但是在宏定義里面就特別有用,因為宏定義規定必須用一行完成: #define SomeFun(x, a, b) if(x)x=a+b;else x=a-b; 這一行定義是沒有問題的,但是這樣代碼很不容易被理解,以后維護起來麻煩,如果寫成: #define SomeFun(x, a, b) if (x) x = a + b; else x = a - b; 這樣理解是好理解了,但是編譯器會出錯,因為它會認為#define SomeFun(x, a, b)是完整的一行,if (x)以及后面的語句與#define SomeFun(x, a, b)沒有關系.這時候我們就必須使用這樣的寫法: #define SomeFun(x, a, b)\ if (x)\ x = a + b;\ else\ x = a - b; 注意:最后一行不要加續行符啊.VC的預處理器在編譯之前會自動將\與換行回車去掉,這樣一來既不影響閱讀,又不影響邏輯,皆大歡喜