你好编程林耿亮c语言程序设计王先水?

main函数中有一个变量名为n的变量,其值为0。而在函数func中,也有一个变量名为n的变量,并将其赋值为100。

函数main中的变量n始终为0,而函数func中的变量n被赋值为100。

通过结果看来,函数func中的变量n,与函数main中的变量n,并不是同一个变量。下面,让我们引入作用域的概念,更加明确地描述并解释这个现象。

首先,我们从代码块开始。

源代码中,被花括号包括的代码,形成一个代码块

如果,我们在代码块A中声明一个整型变量int n = 3。看看编译器是怎样理解这条声明的。

  1. 编译器预留sizoef(int)字节的内存空间。
  2. 标识符n指代上述的内存空间。
  3. 标识符nint类型,用于规范所指代内存空间中数据的使用。

编译器看到这条声明之后,将会为我们预留4字节内存空间。技术上来说,在代码中可以使用这个空间的地址和空间大小来指代该空间。但是,这是汇编语言惯用的写法。而我们使用C语言,就是为了可以通过更方便的方式来操作内存。在C语言中,使用声明变量时的标识符n来指代这个空间。此外,编译器还认为标识符nint类型。当对n做出一些不正常操作时,例如:将n当做指针来使用,会报错或警告提示我们。

使用标识符n来指代内存空间有一定的使用范围。若声明在代码块内,使用范围从变量声明开始,一直到包含声明的代码块结束。这一段使用范围被称之为标识符n块作用域

块作用域有上下两个界限:

  1. 下界限:包含标识符声明的代码块结束

作用域外标识符n没有意义。

对于上界限来说,在标识符n声明前,无法使用标识符n。这也是我们之前老生常谈的标识符先声明后使用的原则

对于下界限来说,包含标识符声明的代码块结束后,标识符n没有意义。因此,在代码块B中,也无法使用标识符n

若在同一代码块中重复声明标识符n,将出现标识符重定义报错。

第一条声明语句已经让标识符n指代了一个数据对象了,它不能再去指代别的数据对象了。

在之前的章节中,我们使用到了+运算符,用于两个数据对象的相加。

这一节中,我们将继续认识更多的运算符,并讨论运算符和数据对象是如何相互作用的。

1.1 什么是表达式?

运算符往往需要与运算对象一起使用才有意义。例如:

其中,5与10是运算对象,+为运算符

在C语言中,一个或多个运算对象与零个或多个运算符组成表达式。下面几个都是表达式:

如上的例子可以看出,100也是一个正确的表达式,虽然它只有运算对象而没有运算符。

运算符运算对象进行运算操作必然产生一个结果,因此每个表达式都有一个结果。例如上面的表达式5 + 10的结果为15。

值15被传入printf后,在控制台上打印出字符15。

表达式后面加上分号构成表达式语句

C语言中表达式不能单独存在,必须以表达式语句的形式存在。

那么下面的表达式5+10呢?它为什么可以没有分号。

因为5 + 10是一个子表达式,函数名加上括号运算符,构成了一个函数调用表达式。 所以,5 + 10为函数调用表达式的子表达式,而函数调用表达式后面加了分号了。

当然函数调用表达式也有一个表达式结果,这个结果就是函数的返回值了。

+为加法运算符,它左右边各需要一个运算对象,构成加法运算符表达式

表达式结果:加法表达式的结果为左右表达式结果相加。

-为减法运算符,它左右边各需要一个运算对象,构成减法运算符表达式

表达式结果:减法表达式的结果为左右表达式结果相减。

+用于标明一个表达式的正负 -用于改变一个表达式的正负。

与加减运算符不同的是,它仅需要在运算符右边有一个运算对象。

+号表达式的结果为右边运算对象的值。

-号表达式的结果为右边运算对象值的相反数。

用于改变表达式的正负:

请注意:+不能改变表达式的正负,请使用负负得正。

大家好,在此收集求资源你好编程c语言教程动画讲解
有效期截止到2022年9月1日21:01,麻烦在此之前点击以下链接将文件发送给我,支持发送任意格式的文件,感谢~

发帖前要善用【】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

我要回帖

更多关于 c语言程序设计王先水 的文章

 

随机推荐