您的位置:

c语言ssi,c语言ssiped

本文目录一览:

什么是服务器端语言,什么是脚本语言,这两者有什么联系

服务器端语言是在服务器上运行的程序所用的编程语言,比如你现在在百度知道里打字,这些操作包括更改输入法,打字都是在自己的电脑上运行的,但一旦你把他提交,就必须存到百度数据库中,之后所有人开这个网页都能看到你的提问,这个行为必须由服务器来操作,在服务器上运行,写这个服务器程序的语言就是服务器端语言,如PHP,JSP等。。。。

脚本语言是一种直接可由txt上写程序,不需要编译,纯文本的语言,只需要软件解释就可以直接运行的程序,这和C++等常规语言的不同点,你现在在网页空白处点击右键选择查看网页源代码,看到的文本就是脚本语言,可直接由浏览器解释并运行,脚本语言也就是可与某软件文字沟通的语言,这样的好处就是,形成了一个官方通用语,可以再网络上随便传来传去而且可以运行,比如刚才提到的网页源代码,就是百度服务器发过来的,但在你的浏览器上运行的客户端脚本,只要你装了浏览器,这个代码就能直接运行,你可以把看到的源代码复制到txt文件中,然后后缀改成,html,双击就能打开一个网页,不需要编译的,而非脚本语言就必须要编译,比如C语言,C++。。。。。

服务器语言和脚本语言没关系,是两个不同的属性描述,脚本语言可以使服务器语言,也可以不是,服务器语言也可以是脚本也可以不是。。。。

C#编程语言的特点与优势

C#比其它语言的优势

C#(读做 "C sharp")是微软公司在去年六月发布的一种新的编程语言,并定于在微软职业开发者论坛(PDC)上登台亮相.C#是微软公司研究员Anders Hejlsberg的最新成果.C#看起来与Java有着惊人的相似;它包括了诸如单一继承,界面,与Java几乎同样的语法,和编译成中间代码再运行的过程.但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows网络框架的主角.

在本文中,我将考察创建一种新计算机语言的一般动机,并将特别指明是什么原因导致了C#的出现.然后我将介绍C#和它与Java,c,c++的相似之处.其次我将讨论一些存在于Java和C#之间的高层次的,和基础的差别.我将以衡量在用多种语言开发大型应用程序的时候所需的知识(或者对这种知识的缺乏程度)来结束本文,而这正是.NET和C#的一个主要战略.目前,C#和.NET还只能以C#语言规则,以及Windows 2000的一个"d预览版本",还有MSDN上迅速增多的文档集子的形式获得(还没有最终定型).

微软c#语言定义主要是从C和C++继承而来的,而且语言中的许多元素也反映了这一点.C#在设计者从C++继承的可选选项方面比Java要广泛一些(比如说structs),它还增加了自己新的特点(比方说源代码版本定义).但它还太不成熟,不可能挤垮Java.C#还需要进化成一种开发者能够接受和采用的语言.而微软当前为它的这种新语言大造声势也是值得注意的.目前大家的反应是:"这是对Java的反击."

C#更象Java一些,虽然微软在这个问题上保持沉默.这也是意料中的事情,我觉得,因为Java近来很成功而使用Java的公司都报告说它们在生产效率上比C++获得了提高.

Java所带来的巨大影响和大家对它的广泛接受已经由工作于这种语言和平台之上的程序员数量明显的说明了(估计世界范围内共有两百五十万程序员使用Java).由这种语言写成的应用程序的数量是令人惊讶的并已经渗透了每一个级别的计算,包括无线计算和移动电话(比如日本发明的Java电话).C#能够在用户领域获得这样的礼遇吗?我们必须等待并观望,就象已经由SSI公司的CEO和主席Kalpathi S. Suresh指出来的那样,"我发现所有这些都是渐进的.如果C#不存在,我们总能回到Java或C和C++.这些都不完全是新技术;它们在更大的意义上来说只是大公司制造的市场噱头.我们必须给他们时间安顿下来看看这些是不是真的对IT工业有什么影响."

C#从Java继承而来的特点

类:在C#中类的申明与Java很相似.这是合理的因为经验告诉我们Java模型工作得很好.Java的关键字import已经被替换成using,它起到了同样的作用.一个类开始执行的起点是静态方法Main().下面的Hello World程序展示了基本的形式:

using System;

class Hello {

static void Main() {

Console.WriteLine("Hello, world");

}

}

在这个例子中,System这个名字指向一个包括了基本C#实用类集合的命名空间(namespace).这个命名空间包括了Console类,它在这个例子中被用来输出一个字符串.类可以是抽象的和不可继承的:一个被申明成abstract的类不能被实例化;它只能被用做一个基类.C#关键字lock就象Java关键字final,它申明一个类不是抽象的,但是它也不能被用做另一个类的基类.界面:就象在Java中一样,一个界面是一组方法集合的抽象定义.当一个类或结构体实现一个界面的时候,它必须实现这个界面中定义的所有方法.一个单一的类可以实现几个界面.也许以后会出现一些微妙的差别,但是这个特点看起来与Java相比没有变化.布尔运算:条件表达式的结果是布尔数据类型,布尔数据类型是这种语言中独立的一种数据类型.从布尔类型到其他类型没有直接的转换过程.布尔常量true和false是C#中的关键字.错误处理:如Java中那样,通过抛出和捕捉异常对象来管理错误处理过程.内存管理:由底层.NET框架进行自动内存垃圾回收.

C#从C和C++继承的特点

编译:程序直接编译成标准的二进制可执行形式.如果前面的Hello World程序被保存成一个文本文件并被命名为Hello.cs,它将被编译成命名Hello.exe的可执行程序.

结构体:一个C#的结构体与C++的结构体是相似的,因为它能够包含数据申明和方法.但是,不象C++,C#结构体与类是不同的而且不支持继承.但是,与Java相同的是,一个结构体可以实现界面.

预编译:C#中存在预编译指令支持条件编译,警告,错误报告和编译行控制.可用的预编译指令有:

#define

#undef

#if

#elif

#else

#endif

#warning

#error

#line []

没有了#include 伪指令.你无法再用#define 语句对符号赋值,所以就不存在源代码替换的概念--这些符号只能用在#if和#elif伪指令里.在#line伪指令里的数字(和可选的名字)能够修改行号还有#warning和#error输出结果的文件名.

操作符重载:一些操作符能够被重载,而另一些则不能.特别的是,没有一个赋值运算符能够被重载.能够被被重载的单目操作符是:

+ - ! ~ ++ -- true false

能够被重载的二元运算符是:

+ - * / % | ^ == != = =

C#独有的特点

C#最引人入胜的地方是它和Java的不同,而不是相似的地方.这一节(和这个系列第二部分的大部分地方)讲述了C#实现的和Java不同的地方或者Java根本没有的特点.

中间代码:微软在用户选择何时MSIL应该编译成机器码的时候是留了很大的余地.微软公司很小心的声称MSIL不是解释性的,而是被编译成了机器码.它也明白许多--如果不是大多数的话--程序员认为Java程序要不可避免的比C编写的任何东西都要慢.而这种实现方式决定了基于MSIL的程序(指的是用C#,Visual Basic,"Managed C++"--C++的一个符合CLS的版本--等语言编写的程序)将在性能上超过"解释性的"Java代码.当然,这一点还需要得到事实证明,因为C#和其他生成MSIL的编译器还没有发布.但是Java JIT编译器的普遍存在使得Java和C#在性能上相对相同.象"C#是编译语言而Java是解释性的,"之类的声明只是商业技巧.Java的中间代码和MSIL都是中间的汇编形式的语言,它们在运行时或其它的时候被编译成机器代码.

命名空间中的申明:当你创建一个程序的时候,你在一个命名空间里创建了一个或多个类.同在这个命名空间里(在类的外面)你还有可能声明界面,枚举类型和结构体.必须使用using关键字来引用其他命名空间的内容.

基本的数据类型:C#拥有比C,C++或者Java更广泛的数据类型.这些类型是bool, byte, ubyte, short, ushort, int, uint, long, ulong, float, double,和decimal.象Java一样,所有这些类型都有一个固定的大小.又象C和C++一样,每个数据类型都有有符号和无符号两种类型.与Java相同的是,一个字符变量包含的是一个16位的Unicode字符.C#新的数据类型是decimal数据类型,对于货币数据,它能存放28位10进制数字.

两个基本类:一个名叫object的类是所有其他类的基类.而一个名叫string的类也象object一样是这个语言的一部分.作为语言的一部分存在意味着编译器有可能使用它--无论何时你在程序中写入一句带引号的字符串,编译器会创建一个string对象来保存它.

参数传递:方法可以被声明接受可变数目的参数.缺省的参数传递方法是对基本数据类型进行值传递.ref关键字可以用来强迫一个变量通过引用传递,这使得一个变量可以接受一个返回值.out关键字也能声明引用传递过程,与ref不同的地方是,它指明这个参数并不需要初始值.

与COM的集成:C#对Windows程序最大的卖点可能就是它与COM的无缝集成了,COM就是微软的Win32组件技术.实际上,最终有可能在任何.NET语言里编写COM客户和服务器端.C#编写的类可以子类化一个以存在的COM组件;生成的类也能被作为一个COM组件使用,然后又能使用,比方说,JScript语言子类化它从而得到第三个COM组件.这种现象的结果是导致了一个运行环境的产生,在这个环境里的组件是网络服务,可用用任何.NET语言子类化.

索引下标:一个索引与属性除了不使用属性名来引用类成员而是用一个方括号中的数字来匿名引用(就象用数组下标一样)以外是相似的.

public class ListBox: Control {

private string[] items;

public string this[int index] {

get {

return items[index];

}

set {

items[index] = value;

Repaint();

}

}

}

可以用一个循环器来匿名引用字符串内部数组成员,就象下面这样:

ListBox listBox = ...;

listBox[0] = "hello";

Console.WriteLine(listBox[0]);

代理和反馈:一个代理对象包括了访问一个特定对象的特定方法所需的信息.只要把它当成一个聪明的方法指针就行了.代理对象可以被移动到另一个地方,然后可以通过访问它来对已存在的方法进行类型安全的调用.一个反馈方法是代理的特例.event关键字用在将在事件发生的时候被当成代理调用的方法声明中.

什么是c#语言?

C sharp(音标 [∫a:p] )(又被简称为"C#")是微软公司在二OOO年六月发布的一种新的编程语言,并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、界面、与Java几乎同样的语法,和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows网络框架的主角。 在本文中,我将考察创建一种新计算机语言的一般动机,并将特别指明是什么原因导致了C#的出现,然后我将介绍C#和它与Java、C、C++的相似之处。其次我将讨论一些存在于Java和C#之间的高层次的、和基础的差别。我将以衡量在用多种语言开发大型应用程序的时候所需的知识(或者对这种知识的缺乏程度)来结束本文,而这正是.NET和C#的一个主要战略。目前,C#和.NET还只能以C#语言规则,以及Windows 2000的一个"d预览版本",还有MSDN上迅速增多的文档集子的形式获得(还没有最终定型)。

编辑本段定义

微软C#语言定义主要是从C和C++继承而来的,而且语言中的许多元素也反映了这一点。C#在设计者从C++继承的可选选项方面比JAVA要广泛一些(比如说struts),它还增加了自己新的特点(比方说源代码版本定义).但它还太不成熟,不可能挤垮JAVA。C#还需要进化成一种开发者能够接受和采用的语言。而微软当前为它的这种新语言大造声势也是值得注意的。目前大家的反应是:“这是对JAVA的反击” 。 C#更像JAVA一些,虽然微软在这个问题上保持沉默。这也是意料中的事情,我觉得,因为JAVA近来很成功而使用JAVA的公司都报告说它们在生产效率上比C++获得了提高。 JAVA所带来的巨大影响和大家对它的广泛接受已经由工作于这种语言和平台之上的程序员数量明显的说明了(估计世界范围内共有两百五十万程序员使用JAVA)。由这种语言写成的应用程序的数量是令人惊讶的并已经渗透了每一个级别的计算,包括无线计算和移动电话(比如日本发明的JAVA电话)。C#能够在用户领域获得这样的礼遇吗?我们必须等待并观望,就象已经由SSI公司的CEO和主席KALPATHI S. SURESH指出来的那样:"我发现所有这些都是渐进的。如果C#不存在,我们总能回到JAVA或C和C++。这些都不完全是新技术,它们在更大的意义上来说只是大公司制造的市场噱头。我们必须给他们时间安顿下来看看这些是不是真的对IT工业有什么影响。" C# (C SHARP)是微软对这一问题的解决方案。C#是一种最新的、面向对象的编程语言。它使得程序员可以快速地编写各种基于MICROSOFT .NET平台的应用程序,MICROSOFT .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。 正是由于C#面向对象的卓越设计,使它成为构建各类组件的理想之选——无论是高级的商业对象还是系统级的应用程序。使用简单的C#语言结构,这些组件可以方便的转化为XML网络服务,从而使它们可以由任何语言在任何操作系统上通过INTERNET进行调用。 最重要的是,C#使得C++程序员可以高效的开发程序,而绝不损失C/C++原有的强大的功能。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。

关于C语言的一道题目 各位达人一定要进来看看 帮助一下 谢谢大家

;

 

 

可以这样写:

#include stdio.h

#include math.h

#include stdlib.h

#include string.h

/****** General utils. ***/

/* Returns the number of digits in i. */

int getNumberOfDigits( unsigned i ) {

    return i ? ( int ) ceil( log10( ++i ) ) : 1;

}

/* Returns the integer represented by the first n digits in s. */

int natoi( char *s, unsigned n ) {

    char buf[ 22 ];

    strncpy( buf, s, n );

    return atoi( buf );

}

/****** End of General utils. ***/

/*

* Using standard labelling convention for sticks (segments) in all 7-segment digits:

*

*

* Here, each digit is represented by an array of 7 chars, so that

* they can be easily strung together *tightly* for convenient manipulation.

*

* char 0 represents segment a, char 1 segment b, ...

*/

char sevenSegmentDigits[ 10 ][ 7 ] = {

   /* a, b, c, d, e, f, g */

    { 1, 1, 1, 1, 1, 1, 0 },    /* 0 */

    { 0, 1, 1, 0, 0, 0, 0 },    /* 1 */

    { 1, 1, 0, 1, 1, 0, 1 },    /* 2 */

    { 1, 1, 1, 1, 0, 0, 1 },    /* 3 */

    { 0, 1, 1, 0, 0, 1, 1 },    /* 4 */

    { 1, 0, 1, 1, 0, 1, 1 },    /* 5 */

    { 1, 0, 1, 1, 1, 1, 1 },    /* 6 */

    { 1, 1, 1, 0, 0, 0, 0 },    /* 7 */

    { 1, 1, 1, 1, 1, 1, 1 },    /* 8 */

    { 1, 1, 1, 1, 0, 1, 1 },    /* 9 */

};

/* Writes 7-segment pattern of digit into sevenSegment. Assumes digit 10. */

void digitToSevenSegment( unsigned digit, char sevenSegment[ 7 ] ) {

    memcpy( sevenSegment, sevenSegmentDigits[ digit ], 7 );

}

/* Returns the digit represented by 7-segment pattern in sevenSegment,

   or -1 if the pattern is invalid i.e. not found in sevenSegmentDigits. */

int sevenSegmentToDigit( char sevenSegment[ 7 ] ) {

    int i = 0;

    for ( ; i 10; i++ )

        if ( memcmp( sevenSegment, sevenSegmentDigits[ i ], 7 ) == 0 )

            return i;

    return -1;

}

/* Returns the result of applying additiveOperator on a and b. */

int operate( int a, char additiveOperator, int b ) {

    return additiveOperator == '+' ? a + b : a - b;

}

void main( ) {

    /* we handle at most 4 integers, and each integer's at most 5 digits long */

    char sevenSegmentInputBuf[ 20 * 7 ],   /* represents strung-together input integers */

         sevenSegmentOutputBuf[ 20 * 7 ];  /* for trying stick movements */

    int ssibIdx = 0,

        from,   /* index of stick to be moved */

        to;     /* counterpart of from */

    /*

     * input pattern:

     *     term1 additiveOperator1 term2 = term3 [ additiveOperator2 term4 ]

     */

    int terms[ 4 ] = { 0 },

        numberOfTerms = 3,

        numberOfDigitsInTerm[ 4 ],

        numberOfDigitsInEquation = 0,

        leftHandValue,          /* value on the left hand side of equation */

        rightHandValue,

        i,

        j;

    char additiveOperator1 = '+',

         additiveOperator2 = '+',

         c;

    /* read compulsory parts of equation */

    scanf( "%u %c %u = %u",

            terms[ 0 ], additiveOperator1, terms[ 1 ], terms[ 2 ] );

    /* any optional part? */

    while ( ( c = getchar( ) ) != '\n' )    /* accept only 1 line ... */

        if ( c == '+' || c == '-' ) {

            additiveOperator2 = c;

            scanf( "%u", terms[ 3 ] );

            ++numberOfTerms;

            break;                          /* ...and read at most 4 terms */

        }

    for ( i = 0; i numberOfTerms; i++ )

        numberOfDigitsInEquation +=

                numberOfDigitsInTerm[ i ] = getNumberOfDigits( terms[ i ] );

    /* convert terms into 7-segment forms and store into sevenSegmentInputBuf */

    for ( i = 0; i numberOfTerms; i++ ) {

        /* convert each term into string, then iterate over the string */

        char termAsString[ 6 ] = "",

             *tas = termAsString;

        sprintf( termAsString, "%u", terms[ i ] );

        for ( ; *tas; tas++, ssibIdx += 7 )

            digitToSevenSegment( *tas - '0', sevenSegmentInputBuf + ssibIdx );

    }

    /* try all possible moves */

    for ( from = 0; from numberOfDigitsInEquation * 7; from++ )

        if ( sevenSegmentInputBuf[ from ] == 1 )

            for ( to = 0; to numberOfDigitsInEquation * 7; to++ )

                if ( sevenSegmentInputBuf[ to ] == 0 to != from ) {

                    char chainedDigits[ 21 ] = "";

                    /* to mess only with the duplicate of sevenSegmentInputBuf */

                    memcpy( sevenSegmentOutputBuf, sevenSegmentInputBuf,

                            numberOfDigitsInEquation * 7 );

                    /* make the move */

                    sevenSegmentOutputBuf[ from ] = 0;

                    sevenSegmentOutputBuf[ to ] = 1;

                    /*

                     * evaluate the resulting equation by first converting 7-segment into

                     * string, then back to integral terms

                     */

                    for ( i = j = 0; i numberOfDigitsInEquation * 7; i += 7, j++ ) {

                        int digit = sevenSegmentToDigit( sevenSegmentOutputBuf + i );

                        if ( digit == -1 )

                            goto skipThisInvalidMove;

                        chainedDigits[ j ] =  digit + '0';

                    }

                    for ( i = j = 0; i numberOfTerms; i++ ) {

                        terms[ i ] = natoi( chainedDigits + j, numberOfDigitsInTerm[ i ] );

                        j += numberOfDigitsInTerm[ i ];

                    }

                    /* evaluate left-hand and right-hand values */

                    leftHandValue = operate( terms[ 0 ], additiveOperator1, terms[ 1 ] );

                    rightHandValue = operate( terms[ 2 ], additiveOperator2, terms[ 3 ] );

                    /* do we have a winner? */

                    if ( leftHandValue == rightHandValue ) {

                        printf( "%u %c %u = %u ",

                                terms[ 0 ], additiveOperator1, terms[ 1 ], terms[ 2 ] );

                        if ( numberOfTerms 3 )

                            printf( "%c %u", additiveOperator2, terms[ 3 ] );

                        return;

                    }

                    skipThisInvalidMove:;

                }

    puts( "No" );

}

 

 

 

关于C和C语言 C++的区别

对于大部分编程的人来说学c语言应该都从vc的(当然也有用tc的),但我觉得这里面有很大一部分朋友并不知道其实你一直用c++的编译器去编c和运行c语言的代码。当然c++是支持绝大部分的c的,但它们是不同的,之所以你能用那些编写和运行c语言代码没有发现有什么不对之处(其实你偶尔也会发现有时你的c代码运行时会怪怪的。)

1) 在C语言中,初始化一个字符数组的方式很容易产生错误,就是数组很可能没有足

够的空间存放结尾的NULL字符.C++于对此此了一些改进、像char b[3] ="Bob"这样的表达式

被认为是一个错误,但它在C语言中却是合法的。

2) 类型转换既可以写成像float(i)这样看上去更顺眼的形式,也可以写成(float)i这样

稍显怪异的C语言风格的形式.

C++允许一个常量整数来定义数组的人小

connst int size=128;

char a[size];

这在C++中是允许的但在C语言中却是错误的.

3)c++ 声明可以穿插于语句之间.在C语言中,一个语句块中所有的声明都必须放在所有

语句的前面.C++去掉了达个专横的限制,做得非常好当然这种做法也会引起与C语言的

不兼容,那为什么不进行得彻底一些,为恐怖的C语言声明语法提供一种更简单的替代方案?

4)在C++中,用户代码不能调用mian()函数,但在C语言中却是允许的(不过这种情

况极为罕见)

5)完整的函教原型声明在C++中是必须的,但在C语言中却没这么严格.

6)在C++中由typedef定义的名字不能与已有的结构标签冲突,但在C语言中却是充

许的(它们分属不同的名命空间).

7)当void*指针赋值给另一个类型的指针时,C++规定必须进行强制类型转换,但在C

语言中却无必要。

8)在C++中,声明可以出现在语句可以出现的任何地方.在C语言中的代码块中,所

有的声明必须出现在所有语句的前面.

9)在C++,字符常量的类型是char,但在C语言中,它们的类型是inL也就是说,

在C++中,sizeof('a')的结果是1.而在c语言中,它的值要大一些。

#(读做 "C sharp")是微软公司在去年六月发布的一种新的编程语言,并定于在微软职业开发者论坛(PDC)上登台亮相.C#是微软公司研究员Anders Hejlsberg的最新成果.C#看起来与Java有着惊人的相似;它包括了诸如单一继承,界面,与Java几乎同样的语法,和编译成中间代码再运行的过程.但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows网络框架的主角.

微软c#语言定义主要是从C和C++继承而来的,而且语言中的许多元素也反映了这一点.C#在设计者从C++继承的可选选项方面比Java要广泛一些(比如说structs),它还增加了自己新的特点(比方说源代码版本定义).但它还太不成熟,不可能挤垮Java.C#还需要进化成一种开发者能够接受和采用的语言.而微软当前为它的这种新语言大造声势也是值得注意的.目前大家的反应是:"这是对Java的反击."

C#更象Java一些,虽然微软在这个问题上保持沉默.这也是意料中的事情,我觉得,因为Java近来很成功而使用Java的公司都报告说它们在生产效率上比C++获得了提高.

Java所带来的巨大影响和大家对它的广泛接受已经由工作于这种语言和平台之上的程序员数量明显的说明了(估计世界范围内共有两百五十万程序员使用Java).由这种语言写成的应用程序的数量是令人惊讶的并已经渗透了每一个级别的计算,包括无线计算和移动电话(比如日本发明的Java电话).C#能够在用户领域获得这样的礼遇吗?我们必须等待并观望,就象已经由SSI公司的CEO和主席Kalpathi S. Suresh指出来的那样,"我发现所有这些都是渐进的.如果C#不存在,我们总能回到Java或C和C++.这些都不完全是新技术;它们在更大的意义上来说只是大公司制造的市场噱头.我们必须给他们时间安顿下来看看这些是不是真的对IT工业有什么影响."

C++,这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程序程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。

贝尔实验室的本贾尼·斯特劳斯特卢普(w:en:Bjarne Stroustrup)博士在20世纪80年代发明并实现了C++(最初这种语言被称作“C with Classes”)。一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、名字空间(name space)逐渐被加入标准。1998年国际标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC 14882-1998。遗憾的是,由于C++语言过于复杂,以及他经历了长年的演变,直到现在(2004年)只有少数几个编译器完全符合这个标准。

另外,就目前学习C++而言,可以认为他是一门独立的语言;他并不依赖C语言,我们可以完全不学C语言,而直接学习C++。根据《C++编程思想》(Thinking in C++)一书所评述的,C++与C的效率往往相差在正负5%之间。所以有人认为在大多数场合C++ 完全可以取代C语言。

C++语言发展大概可以分为三个阶段:第一阶段从80年代到1995年。这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;第二阶段从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重性。当然,同时由于Java、C#等语言的出现和硬件价格的大规模下降,C++受到了一定的冲击;第三阶段从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程序设计语言中最复杂的一员。

至于计算机2级为什么不包括C#,因为各种语言的思想都是相同的,掌握了C,其他的就都很容易了,我们学的主要是这个思想

C#语言到底是什么,它与C语言有什么区别?

C#是微软公司在2000年6月发布的一种面向对象的编程语言。它使得程序员可以快速地编写各种基于Microsoft .NET平台的应用程序,Microsoft .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。

C#语言与C语言区别为:编译不同、内存管理不同、应用不同。

一、编译不同

1、C#语言:C#语言的代码首先会被编译为CLR(公共语言运行库),然后由.NET框架解析。

2、C语言:C语言的代码将会直接被编译为机器代码。

二、内存管理不同

1、C#语言:C#语言是在虚拟机上执行,会自动进行内存管理。

2、C语言:C语言需要手动组织管理内存。

三、应用不同

1、C#语言:C#语言的的应用涉及基于Web的桌面和移动应用程序。

2、C语言:C语言的的唯一目的就是创建独立的控制台应用程序。