LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: zqpytrjb

【疑惑】这里究竟有几个会C语言的人?

[复制链接]
发表于 2005-4-20 10:59:22 | 显示全部楼层

磨嘴皮子

大家不要在这里磨嘴皮子了, C/C++我都用了8年了。才学的时候以为很简单,后来才知道是博大精深。一个C就把大家搞成这样了,那C++不知道要把大家搞成什么样呢。不做编译器不会对他们了解那么彻底的,只能是用到那学那好了
:p  
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-20 23:21:57 | 显示全部楼层
Post by lit_river
大家不要在这里磨嘴皮子了, C/C++我都用了8年了。才学的时候以为很简单,后来才知道是博大精深。一个C就把大家搞成这样了,那C++不知道要把大家搞成什么样呢。不做编译器不会对他们了解那么彻底的,只能是用到那学那好了
:p  


C++太复杂了,
很难精通,
刚毕业的时候很迷恋C++,
现在不感兴趣了,
有时间打算学点java,
或者perl之类的语言。
回复 支持 反对

使用道具 举报

发表于 2005-4-21 10:49:13 | 显示全部楼层
我觉得学好C就要学好UNIX,再就是汇编。
回复 支持 反对

使用道具 举报

发表于 2005-4-23 11:58:34 | 显示全部楼层
第一个问题确实相当麻烦,主要是在16位环境下普通整型只有16位长,而平年一年一共是

  1. 365*24*60*60 = 31536000
复制代码

因此除非我能确定那个平台/编译器支持一个至少 32 位长的整数类型,否则我认为无论靠一个宏还是靠一个函数都无法直接在代码中用内建数据类型表示这个数字。除非:
1. 手工设计一个能够容纳 32 位以上数据的 BigInteger 类/结构体,不过这样很麻烦。
2. 用这样的办法:

  1. #define YEAR_SECODES "31536000"
复制代码

直接记录字符串。

第二个问题相对就简单多了:C 语言的 static 一共三种用途:
1. 全局静态变量:表示该变量名称只在当前编译单元(当前文件中)可见,但是外部代码可以通过指针间接访问;
2. 局部静态变量:实际上这是一个全局变量,但是其名称只在定义它的定义域内可见;
3. 静态函数:同 1,该函数只能在当前编译单元可见,但是外部可以通过函数指针间接访问。

回答得不好,让楼主见笑了。
回复 支持 反对

使用道具 举报

发表于 2005-4-23 17:55:33 | 显示全部楼层
第一道题正确的应该是:
#define YEAR_SECONDS (365L * 24L * 60L * 60L)
因为:
1. ISO C 标准规定 long 不能小于 4 bytes, int 不能小于 2 bytes
2.
#define YEAR_SECONDS (long)(365 * 24 * 60 * 60) 或者
#define YEAR_SECONDS (365 * 24 * 60 * 60L)
都是不正确的,因为在 16 bits 的机器上,int 很可能是 2 bytes, 以上两种方法在做乘法运算时都会溢出。
回复 支持 反对

使用道具 举报

发表于 2005-4-23 22:20:16 | 显示全部楼层
琐碎的语法搞那么熟简直是吃得多!
以人为本. 发觉不对我不知道debug?
回复 支持 反对

使用道具 举报

发表于 2005-4-23 22:45:22 | 显示全部楼层
Post by xiaolongyuan
琐碎的语法搞那么熟简直是吃得多!
以人为本. 发觉不对我不知道debug?

与其写了有错的程序再来辛辛苦苦的debug,不如一开始就尽量写没错的程序。
你这样的态度不可取!
回复 支持 反对

使用道具 举报

发表于 2005-4-24 08:28:04 | 显示全部楼层
有些错误debug是发现不了的,兄弟!
回复 支持 反对

使用道具 举报

发表于 2005-4-24 09:24:11 | 显示全部楼层
现在行市长了,C语言的难找了,象我这样没有读过一本楼主说的书的人,也能拿12k.
回复 支持 反对

使用道具 举报

发表于 2005-4-24 16:14:23 | 显示全部楼层
Post by zqpytrjb
答案基本正确
1。 #define SECONDS_PER_YEAR (365*24*60*60UL)
2。static加在变量前和加在函数前是不同的含义。 :p


你的答案也是错的,应该是
1. #define SECONDS_PER_YEAR    (365UL * 24 * 60 * 60),是从左向右算的。
2. static加在变量前和加在函数前含义是一样的,符号不可以被导出,只能在本模块内引用。函数内的static变量则表示在数据段而非栈中分配空间。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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