今天开始自学C语言, 其实早就接触过一些C语言的编程知识,但是一直以来发现自己的语言功底不够扎实,因此想要从新好好学习学习C语言。

首先进行一个测试:

Exp_1:
#include <stdio.h>
int main(int argc,char *argv[])
{
     printf("Hello word
            ");
     getch();
}

看到这个地方,不知道大家认为这个程序有什么异常没有, 从我曾经学习过的C语言书籍来看,我得到的知识点是这样的: 在C语言的编译过程中,空格是不被编译的,就是说如果我们在C语言的程序代码中插入一个、两个或者三个,甚至更多的空格,其编译结果是一样的。

例如:

Exp2: 定义函数变量

   int  iAge;   //一个空格

        int      iAge; // 多个空格 

很显然上面的两个定义整型数据的C语句具有一致的效果。

Exp3: 赋值和运算语句

        iAge = 100 ; // 赋值运算符的左值和右值之间一个空格

        iAge=100;   //赋值运算符的左值和右值之间没有空格

        iAge+=100; // 加法运算之间没有空格

        iAge += 100; //加法运算之间有空格

很显然这些语言也都成立。

是否就是说: 在C语言编译器里面空格是可以被忽略的呢?

虽然上面例举的实例都证明在某些情况下C的编译器会忽略空格,但是不能代表在所有的地方一个空格和两个空格就是一样的。

如果在WinTC上编译或者在Turbo C上编译,可以发现前面的Exp1是不能被编译通过的:

会报:   没有结束引号的字符串   ——》  printf("Hello word

这就证明在C语言中空格也不是随便就可以加的。

那么什么时候空格不能被忽略呢?

下面简单的总结几项, 都是一孔之见,欢迎各位弯腰找板砖..............................

1、   C标准里面规定的组成关键字的字符间不能出现空格,例如:

         int   不能写出  i nt

2、   定义用户自定义标识符时,组成标识符的字符间不能有空格,例如:

         int  iAge; 不能写成  int i Age;

3、  C语言定义的多字符组成的运算符之间不能有空格,例如:

        iAge+=100;   这个地方的 +=之间就不能有空格, 这个现象仅限于两字符或者三字符的运算符。当然   ? :  这个运算符除外。

4、  在编辑C源代码时,用户定义的字符串字面值,就是通常说的字符串常量的后引号之间,不能出现回车带来的空格。例如:

       “Hello word ”;

不能写成:“Hello word

                ”;

在第四种情况下可以利用  “ \ ” 符号来消除编辑期间回车带来的副作用。

     例如:   “Hello  Word” ;就可以定义为

     "Hello word   \

      "

*** 重点介绍一下 反斜杠 " \ "

我们知道当我们一行写不下一个C语言语句时, 我们可以使用续行符 "\" 来续行,但是我们依然可以在一行可以写下代码时使用它。如:

Exp4:

       printf("Hello Word\! ");

      这里会输出什么呢? 一般我们学习是得到的教育是:printf里面的第一个字符串参数原样输出,即会输出: Hello Word\!

但是实际输出却不是上面描述的,而是:

       Hello Word!

就是说在C语言编译器里面, 当我们使用单独的一个 "\" 时他就是一个续行符, 哪怕这个续行是在一行也是一样。 (当存在转义序列时除外)。