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 了。当然括号也是比较好的。

posted @ 2015-11-23 17:44  qxj511  阅读(6798)  评论(0编辑  收藏  举报