同感《C有C的规则》

原创 2006年06月05日 00:06:00

 

昨天看了云风的《C有C的规则》(http://blog.codingnow.com/2006/05/c.html),最近也小有感受。

先说说前几天范的一个低级错误,以前写java代码的时候,高手们教导我说:局部变量用到的时候再声明,这样有利于程序的可读性。所以我在c中写出了类似如下的函数:
void foo(void)
{
 int a = 1;
 printf("%d",a); 
 int b = 3;
 printf("%d",a+b);
}
编译怎么也通不过,经过多次尝试,修改成下面样子,通过编译:
void foo(void)
{
 int a = 1;
 int b = 3;
 printf("%d",a); 
 printf("%d",a+b);
}
C有C的规则,局部变量声明就是要放在开始。C就是这么简单,它有它的道理。

由于工作变更,最近阅读了不少C代码。刚开始看的时候很不习惯,代码中有太多的宏,宏定义中还可以有宏。宏说起来简单,就是编译的时候替换,但是规则越是简单,用法越是灵活。以致有人感叹:宏在这些代码中被发挥的淋漓尽致。对于下面这样一个枚举变量定义:
 enum fruit {
  APPLE,
  ORANGE,
  BANANA
 };
通过一些宏定义后,会变成这样:
 DEFINE_FRUIT_BEGIN
 /*define your fruit here*/
 DEFINE(APPLE)
 DEFINE(ORANGE)
 DEFINE(BANANA)
 DEFINE_FRUIT_END
这样看起来颇有充斥于java世界中的那些配置文件的味道:)

正如云风在他的blog最后所说:“C 就是那么一如既往的简单,简单的可爱又可恨。我用五年时间,感觉自己学会了 C++ 。但是十五年了,仍旧问自己到底可以用 C 完成多大的项目。”

C语言学习笔记(一)变量声明的规则

声明是告诉编译器有这么个变量,但并不实现。定义就是实现这个变量,真正在内存(堆或栈中)为此变量分配空间 它们的本质区别是:是否分配内存空间,定义需要分配空间,声明不需要分配空间。 int ...
  • nightduke1
  • nightduke1
  • 2013年11月23日 19:26
  • 1904

C语言声明优先级规则

A  声明从它的名字开始读取,然后按照优先级顺序依次读取。B  优先级从高到低依次是:    B.1  声明中被括号括起来的部分;    B.2  后缀操作符:括号()表示这是一个函数,而方括号[]表...
  • finewind
  • finewind
  • 2010年11月26日 11:51
  • 838

C语言的函数调用规则

C语言的函数调用规则:所有参数都是传值调用。但是我们平时所说的传址调用是什么呢?这就是我们这些所要   说明的。 C函数的所有参数均以“传值调用”方式进行传递,这意味着函数将获得参数值的一份拷贝...
  • KidLeaf2
  • KidLeaf2
  • 2011年08月13日 01:32
  • 1767

C++语言的词法和词法规则

一C++语言的字符集(同C语言)      1大小写英文字母       a~z(国际ASCII码为97~122)和A~Z(国际ASCII码为65~90)      2数字字符       0~9(国...
  • erlian1992
  • erlian1992
  • 2015年02月01日 16:39
  • 1333

c语言变量名规则

c语言变量名规则 在程序设计中,变量名、函数名、数组名等统称为标识 符。简单地说,标识符就是一个名字。除库函数的函数名由系统定义外,其余都由用户自定义。C语言规定,标识符只能由字母...
  • woxinyijiuw
  • woxinyijiuw
  • 2012年06月01日 09:10
  • 3178

C语言基本数据类型及转换规则

C语言的基本数据类型;有点奇怪的是为什么float和double不用signed/unsigned修饰。 符号属性 长度属性 基本型 所占位数 取值范围 输入符举例 输...
  • Since20140504
  • Since20140504
  • 2014年05月08日 16:04
  • 2477

【C语言】C语言中赋值语句规则

赋值语句是由赋值表达式再加上分号构成的表达式语句。 其一般形式为: 变量=表达式; 在赋值语句的使用中需要注意以下几点: 由于在赋值符“=”右边的表达式也可以又是一个赋值表达式,...
  • weixin_38239856
  • weixin_38239856
  • 2017年04月09日 20:30
  • 1365

C语言隐式类型转换的规则

C语言隐式类型转换的规则隐式类型转换规则......
  • tuzhao
  • tuzhao
  • 2016年04月26日 11:17
  • 1708

通过 Linux文件描述符/Windows句柄 来看 C语言里的"FILE"

1.“文件”的由来 一个程序的I/O指代了程序与外界的交互,包括文件、管道、网络、命令行、信号等。更广义地讲,I/O指代任何操作系统理解为“文件”的事务。许多操作系统,包括Linux和Windows...
  • u013547361
  • u013547361
  • 2015年08月04日 11:27
  • 1305

C语言头文件包含和编写的几个基本规则

总想着把所有的头文件都saida
  • atefrice
  • atefrice
  • 2014年08月18日 19:57
  • 2037
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:同感《C有C的规则》
举报原因:
原因补充:

(最多只允许输入30个字)