您的位置:首页 > 编程语言 > C语言/C++

C语言的空格问题

2015-11-23 17:44 218 查看
对于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 了。当然括号也是比较好的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: