LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 764|回复: 9

请问外部变量和内部变量是什么意思?

[复制链接]
发表于 2003-10-8 23:35:55 | 显示全部楼层 |阅读模式
感到好抽象,外部,内部指的是哪里?

是对于储存器来说的,还是程序。:ask :ask------- 看那C语言部懂的概念
发表于 2003-10-9 08:34:34 | 显示全部楼层
可能是对函数而言.
发表于 2003-10-9 08:40:27 | 显示全部楼层
这是由于程序分块编译造成的。对于大型程序来说,一般有很多个小程序,每个小程序都是一个独立的编译单元。由于每个程序不可避免地要引用其它程序的变量,所以在编译时,要暂时不分配地址,而编译单元中的变量可以直接分配地址。这种编译上的不同,造成外部变量和内部变量上的差异。外部变量的地址定位要等到连接时才能完成。
发表于 2003-10-9 12:10:06 | 显示全部楼层
哪里出现的

现在好像都没有这个说法了吧

如果有那也应该是对可见性来说

外部变量可以被其它文件访问

内部变量只能在定义的范围内访问(在文件内定义的就是在此文件内被访问 在函数内定义的就是在函数内可以访问)
 楼主| 发表于 2003-10-9 13:34:39 | 显示全部楼层
谢谢大家,我懂了。但要在以后实践中才能理解得透。

随便在这里问个问题。
5 % 10   == 5
2 % 89   == 2
怎么会这样? 不是前面的数的绝对值要大于被除书的绝对值才行的吗 ?
发表于 2003-10-9 16:18:28 | 显示全部楼层
我的理解,前面的数,2和5,就是被除数。
10和89是除数。
 楼主| 发表于 2003-10-9 19:26:12 | 显示全部楼层
按照你的做法

5 % 10  == 0
2 % 89  == 1
和结果不同哦   :ask  :ask
发表于 2003-10-9 19:49:02 | 显示全部楼层
这个很简单就是求余数嘛,

求余数的,当然可以不用前面的数大于后面的数了拉,
发表于 2003-10-9 21:57:20 | 显示全部楼层
这里不得不给个忠告,哪里不懂,赶快找本书看看,再不看,只会不停的重复过去的错误,永远停留在原地。
比如:
5 % 10 == 5
我可以说右边不一定是 5,右边可以是任何整数。
因为这个本身是一条关系表达式,在 c 语言里 == 是关系运算符,并不等同于 =,两者意思相差十万八千里,如果平时不注意这些细节,那么你编程时会吃很多的苦头,有时候你可能跟本查不出错误在哪里。

求余数运算看似简单,有些地方还是比较有趣的,不动手实验一下,会判断错误。如负数取余数:

  1. #include <stdio.h>

  2. int main()
  3. {
  4.         printf ("  -1 % 10    = %d\n", -1 % 10);
  5.         printf ("(-1) % 10    = %d\n", (-1) % 10);
  6.         printf (" 1 % (-10)   = %d\n", 1 % (-10));
  7.         printf ("(-1) % (-10) = %d\n", (-1) % (-10));

  8.         return 0;
  9. }
复制代码

不测试一下,你答得上来吗?
发表于 2003-10-10 08:46:57 | 显示全部楼层
5除以10商0余5,
cout<<(5%10):
将输出余数,5,而不是商,0.
==可以作等号(=)用,但在你贴出的表达式中,==作关系运算符,用于比较左边和右边的值是否相等,相等,则整个表达式的值为1,反之,为0。
cout<<(5%10==5)<<(5%10==4)<<endl;
这是我的理解,不一定都正确。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表