C語言的空格問題


    對於C語言中,一般的理解是對於空格,我們可以隨意輸入,因為空格沒啥大意義,但是事實上並非如此。

1、'\'空格的問題

    '\' 字符可用於一些字符進行轉移,當然也包括了 newline(enter),被轉義的 newline 在邏輯上是對上一行的延續,可以用於連接長長的字符串。但是,如果在:\enter 和 \  enter 是完全不一樣的,前者是正確的,而后者會出現錯誤。

(1) \enter

printf("hello world\          
     i love linux");

 

    輸出的結果為:hello world                i love linux,

    '\'之后馬上接enter(enter 不可見),也就是說 '\'之后的空格被轉義為換行,所以以換行的方式打印出結果。

(2)\  enter

printf("hello world\          
     i love linux");

    報錯,'\' 之后接的是空格,空格后面沒有被轉義,所以就被認為是一樣,就會出現:缺少換行符的錯誤。

    對於這種錯誤,是非常難去查找的,因為對於一個 enter 來說,是完全不可見的。

    對於此類的問題,在需要對長字符串進行換行的時候,\ 之后就直接 enter。

2、沒有空格的問題

    一切的禍害都是因為空格,那干脆空格都不要了吧,不行,沒有空格反而帶出來了其他的問題。

z = y+++++x;

    對於此類的問題,完全沒有空格,不僅是帶來了不變分析代碼的麻煩,更會帶來報錯,因為編譯器將上面解析為:z = y++++ + x;。所以上面的代碼添加空格為:

z = y++ + ++x;

    這樣就是正確了。

3、/* 帶來的問題

z = *p/*q;

    執行上面的代碼,本意是執行 p 所指的內與與 q 所指的內容進行取整運算的,但是報錯了,原因是編譯器將:'/*' 理解為注釋了。所以添加空格為:

z = *p / *q;

    這就 OK 了。當然括號也是比較好的。


免責聲明!

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



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