今天开始自学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语言编译器里面, 当我们使用单独的一个 "\" 时他就是一个续行符, 哪怕这个续行是在一行也是一样。 (当存在转义序列时除外)。