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 了。当然括号也是⽐较好的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论