cn.comp.lang.c FAQs [20050922]

cn.comp.lang.c FAQs

1.关于
1.1 这是一份什么文档?
这是新闻组(newsgroup)cn.comp.lang.c的FAQs

1.2.什么是新闻组
没有人可以规定什么是新闻组,但是抱歉,这个问题不在我们的讨论范围
内,如果你是一个新手还尚未接触过新闻组,那么你可以来这里看看
http://news.yaako.com , 我相信在这里你能找到很多你需要的资源。 如果
你已经开始使用新闻组但是对其还不熟悉,需要一些帮助的话,请去
cn.help组发问。

1.3.什么是FAQs?
FAQs是Frequently Asked Questions的缩写,是将某一方面常见的问题以问
答的方式写出来的文档。如果你在C/C++上遇到了什么困难,需要别人帮你
解答,不妨先看看本文档,或者用google groups搜索一下本组。

1.4.这份文档是comp.lang.c的C FAQs的中文版吗?
不是。

1.5.这个文档目前由谁维护?
Changming Sun(snnn),如果你在阅读的过程中发现了什么BUG,比如错别字,语法错
误,知识概念性的错误等等,你可以迅速联系我。我的邮箱是
me@sunchangming.com.

1.6.这份文档遵守什么样的版权协议?
目前是GPL.以后我会考虑逐步放宽。简而言之,如果你不打算用于商业用
途的话,可以自由转载本文档。

1.7.cn.comp.lang.c是一个什么样的组?
以讨论程序设计语言C/C++为主的新闻组。

1.8.C/C++是什么?
两门程序设计语言,C语言,C++语言.

1.9.这个组的信件以什么语种为主?
汉语,同时也欢迎少量的英文,法文等其他信件。

1.10.在这个组发帖有什么限制?
必须与本组用户所常讨论的主题相关。本组主要讨论的是C/C++,另外也讨
论一些其它的电脑技术如UNIX,USENET.广告和涉及政治 制度的一律被认为
是不受欢迎的,讨厌的。

1.11.这是唯一的中文C/C++组吗?
目前,是的。

2.C/C++语言概览

2.1.什么是C语言?
C语言是一门很古老的结构化程序设计语言。70年代初,美国Bell实验室为
了开发Unix操作系统,感觉已有的高级语言都效率低下或者使用不便,而
汇编语言使用起来太麻烦,就发明了C语言。1973年左右,C语言大致成型,
1979年6月,K&R C出现并风靡全球,直到1983年9月,第一个国家级C语言
标注,ANSI C被美国标准化组织制定。

2.2.什么是C++语言?
C++也是一门程序设计语言,出现于1985年9月。它是一门面向对象的程序
设计语言,并兼容了C语言的大部分特性。同时它所特有的模板(template)
技术还可以使得程序员可以轻松写出泛型化的数据结构和算法,还可以支
持编译期计算,等等。

2.3.C语言的设计思想主要从什么语言继承而来?
B,BCPL,汇编。

2.4.C++语言的设计思想主要从什么语言继承而来?
C,以及一些早期的的面向对象语言,如Smalltalk等等。

2.5.那么是不是还有一个名叫D语言的是从C/C++中继承而来?
是的。它结合了C++的大部分特性,并加入了自动垃圾回收(Gabarge
Collection)的功能。不过关于它的问题不在本组的讨论范围内。

2.6.那么是不是还有一个名叫E语言的是从D中继承而来?
抱歉,我不知道。似乎目前还没有听说过。

2.7.现行的C/C++标准是什么?分别是哪年制定的?
目前,全世界统一使用的标准都由ISO组织制定,尽管它不是唯一的标准化
组织,但是它是各厂商和程序员主要遵从的标准。本组的讨论也以ISO
C/C++标准为主。现行的,ISO最新的C语言标准于1999年制定,常被称为
C99. C++的标准于1998年制定。

2.8.用C语言写的程序可以运行在什么样的硬件平台上?
绝大多数。这正是C语言如此流行的原因。

2.9.用C语言写的源代码可以不经修改的作为C++编译吗?
不,据我的经验,大多数都不可以。

3.语法

3.1.声明(declarations),定义(definitons),与初始化
(Initializations)。

3.1.1.C++中的内置数据类型说明符有哪些?
char,unsigned char,signed char,bool,unsigned,unsigned int
,signed,singed int,int,unsigned short int,unsigned short,unsigned
long int,unsigned long,signed long int,signed long,long
int,long,signed short int,signed short,short
int,short,wchar_t,float,double,long double,void.

3.1.2.C++中实际有多少种内置数据类型?
15种,char,unsigned char,signed char,bool,unsigned
int,int,unsigned short int,unsigned long int,long int,short
int,wchar_t,float,double,long double,void.

3.1.3.int是32位有符号整数吗?
不一定。int一定是有符号整数,但是没有人规定它的位长应该是多少。但
是在32位机上它一般都是32位。

3.2.函数
3.2.1.一个函数可以调用自身吗?
可以。但是注意要设置好终止条件,否则它会一直调用自己循环调用下去
直到资源耗尽。

3.2.2.一个类可以被当作一个函数来用吗?
可以,只要它提供了足够的公共接口。比如它需要一个公共的构造/析构函数,
一个公共的()运算符。

3.2.3.类可以被声明在函数中吗?
可以,这样的类通常被称为local class.

4.语义

4.1.面向对象中常说的接口(interface)类是什么?
只含有纯虚函数的类。它规定了一个类应该提供什么样的功能,而不规定如何去
做。故名之为接口。如

class MediaPlayer{ 
  virtual void play(Item item); 
  virtual void play(std::list<Item> items); 
  virtual void stop(); 
} 

class MusicPlayer:MediaPlayer; 
class VideoPlayer:MediaPlayer;

4.2.泛型中的接口类是什么样子的?
泛型中当然也有接口这个概念,比如type_traits,
binary_function,etc...。但是在实现上和面向对象完全不同。
例如

template<class Arg1, class Arg2, class Result> 
   struct binary_function { 
      typedef Arg1 first_argument_type; 
      typedef Arg2 second_argument_type; 
      typedef Result result_type; 
   };

4.3.什么是整数提升?
(未完,待续)

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥