在C 中定义常量的两种方法的比较计算机二级考试

文章作者 100test 发表时间 2009:06:15 10:08:33
来源 100Test.Com百考试题网


  编辑特别推荐:

  全国计算机等级考试(等考)指定教材

  全国计算机等级考试学习视频

  全国计算机等级考试网上辅导招生

  全国计算机等级考试时间及科目预告

  百考试题教育全国计算机等级考试在线测试平台

  全国计算机等级考试资料下载

  全国计算机等级考试论坛

  计算机等级考试四级应用题解析汇总

  2009年下半年全国计算机二级考试报名时间从6月1日起已经开始报名。详情点击:2009年下半年全国计算机等级考试各地报名点汇总。2009年下半年全国计算机二级考试时间是2009年9月19日至23日。更多优质资料尽在百考试题论坛 百考试题在线题库

  在C 中,要定义一个常量,有两种主要的做法
  1. 符号常量 (#define)
  2. 常值变量 (const)
  符号常量的定义方式,其实与C 本身没有关系,它是一个编译器指令,或者称为预处理指令(有关的预处理指令还有#include,#ifdefine等等)。它的用法如下
  #define PI 3.1415926
  这样的语法就定义了一个叫做PI的符号常量,它的值指定为3.1415926.
  【注意】因为它其实不是C 语法,所以它不需要(也不能)用分号结束。
  我们怎么使用呢
  #include <.iostream>.
  #define PI 3.1415926
  using namespace std.
  int main()
  {
  double Area(int radio).//声明方法
  cout<.<. Area(2)<.<.endl.
  return 0.
  }
  double Area(int radio)//实现方法,这是一个根据半径计算面积的方法
  {
  return PI*radio*radio.
  }
  与符号常量相对的,常值变量需要通过const关键字定义。相对来说,const更加现代,它是c 的一个关键字,它的用法如下
  const double PI=3.1415926;
  我们把上面的代码转换一下  #include <.iostream>.
  using namespace std.
  const double PI=3.1415926.
  int main()
  {
  double Area(int radio).//声明方法
  cout<.<. Area(2)<.<.endl.
  return 0.
  }
  double Area(int radio)//实现方法,这是一个根据半径计算面积的方法
  {
  return PI*radio*radio.
  }
  总结起来说,我们推荐用const,而不是#define预处理指令
  1. const可以定义数据类型,提高了类型安全性。例如,我们上面可以指定PI这个常量是double类型
  2. const既然是变量(这里有点别扭,它其实是不变的,但名称叫做常值变量),那么就有地址,适用面更加广
  3. 语法上也更好理解一些
  题外话:在C#中能不能使用符号呢?
  C#中也可以使用符号定义,例如下面这样
  #define MINI
  using System.
  using System.Collections.Generic.
  using System.Text.
  namespace ConsoleApplication1
  {
  class Program
  {
  static void Main(string[] args)
  {
  #if MINI
  Console.WriteLine("你定义了MINI符号").
  #endif
  Console.Read().
  }
  }
  }
  一般这样做的目的都是为了改变编译行为。因为#define是编译器指令
  除了用#if这样的条件编译语句之外,我们还可以用Conditional指令
  #define MINI
  using System.
  using System.Collections.Generic.
  using System.Text.
  using System.Diagnostics.
  namespace ConsoleApplication1
  {
  class Program
  {
  static void Main(string[] args)
  {
  #if MINI
  Console.WriteLine("你定义了MINI符号").
  #endif
  //按条件调用方法
  SomeMethod().
  Console.Read().
  }
  [Conditional("MINI")]//Conditional 是一个新的Attribute,可以进行条件编译,本例的意思是只有定义了MINI这个符号的情况下,才将该方法编译进去。否则,任何其他调用处都将放一个空白。
  static void SomeMethod()
  {
  Console.WriteLine("你调用了我的方法").
  }
  }
  }
  但是conditional只能针对void方法,这其实很好理解。因为你要知道,它可能被替换掉,就是可能不被编译。如果它有返回值,而且该值需要被其他程序代码使用,那不就是麻烦了吗?

  2009年9月全国计算机等级考试时间及科目预告

  2009年NCRE考试有新变化

  2009年全国计算机等级考试-大纲

  全国计算机等级考试历年真题及答案

  2009年上半年全国计算机等级考试试题及答案



相关文章


C 编译器性能比较计算机二级考试
在C 中定义常量的两种方法的比较计算机二级考试
C 回调函数用法计算机二级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛