對於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 了。當然括號也是比較好的。