【C++】反斜杠“\”的作用


轉自 https://blog.csdn.net/ismallboy/article/details/8082514

  1. 轉義字符;如:\n表示回車+換行等。
  2. 續行符;這個需要注意一下,在一般的語句中,這個有和沒有事沒關系的,編譯器編譯的時候會自動把兩句連在一起(注意是把第二行原原本本從開始第一個字符(包括空格)連接到前一行上面);看下面例子:
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的預處理器在編譯之前會自動將\與換行回車去掉,這樣一來既不影響閱讀,又不影響邏輯,皆大歡喜


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM