C#和C++与C语言的关系

5

我从未使用过C或其他编程语言,但我经常使用这个网站,所以你可以想象我经常遇到它们。由于我不太了解这些语言,这是谷歌无法回答的问题。

那么简单来说,这些语言之间有什么区别呢?我认为它们是相关的。我只知道C++是将面向对象编程引入C语言的。

9个回答

16

就语法而言,它们在某种程度上有关联。

总的来说,C++ 在很大程度上增加了许多能力,主要包括面向对象编程和泛型编程结构。然而,它尽可能地保持与 C 的向后兼容性。

另一方面,C# 则是一个非常不同的语言。它完全放弃了所有向后兼容的尝试,并更多地试图保持与 C++ 的表义相似性。

然而,在实际应用中,这三种语言都非常独特。由于支持库和技术的巨大差异,C 与 C++ 以及 C# 的开发方式有很大的不同。


6

C语言是祖宗。当你编译C应用程序时,会得到可执行的机器码,可以在你编译的任何平台上运行。

C++将面向对象开发添加到了C中。

C#只是与C语言名称中的字母相似,并且具有类似的语法结构。C#编译成.NET IL,由.NET运行时即时编译(就像.NET语言系列的其他语言一样)。


不是挑刺,但“可执行字节码”是个矛盾的说法。字节码会被JIT编译器或解释器转换成可执行的机器码。C编译器不会生成字节码,它生成的是机器码。无论如何,还是要给你点赞。 - John Dibling
@John - 哎呀!今天真是漫长的一天。看来午饭后我需要开始仔细校对每一份文件两遍了。 - Justin Niessner
1
当然,没有任何阻止任何人编写一个生成.NET IL(“字节码”)而不是机器码的C编译器。这是可以做到的。 - Tamas Czinege
C++ 还增加了模板和其他功能。http://en.wikipedia.org/wiki/Template_(programming) - Liran Orevi

5

C#与C或C++并没有太多关联,除了名称和使用相似的语法。在底层,C#与C和C++完全不同。

C#受到Java的强烈启发。


4

C语言和C++语言非常相似;C++几乎是直接从C语言派生而来的,添加了一些新的语法和语义来支持面向对象编程。像C语言一样,它不提供内置支持除基本流定向I/O之外的任何内容;涉及位图图形、声音、网络等的任何内容都必须使用第三方库来完成。这两种语言的程序往往被编译并作为本地机器代码运行。

C#语言与Java语言比与C语言或C++语言更加相似;像Java语言一样,它倾向于被编译成在虚拟机中运行的字节码,而不是本地代码,并且像Java语言一样,它试图支持C语言和C++语言不支持的所有内容。Java语言和C#语言在第一眼看起来有点像C语言和C++语言(它们使用许多相同的关键字、分隔符等),但是在使用一段时间后,你会意识到它们是非常不同的语言。


2

他们的名称看起来相似,因为它们的语法看起来相似。

C 从这三种语言中可以说是最不同的。它实际上是一种高级汇编语言,可以编译多个处理器架构的代码。(而汇编通常不能)


1

C++提供了许多功能,除了C语言外,还可以辅助编写面向对象程序。即使在C++或C#中,任何面向对象的程序都可以轻松地重写为非OOP。具体的面向对象特性包括:

  • 函数重载:int foo(int)和int foo(char)
  • 运算符重载
  • 继承
  • 多态
  • 模板(技术上不仅限于OOP)

0

C语言是基础编程语言。它非常适合低级别的编程,虽然你可以使用它进行更高级别的面向对象编程(OOP),但这样做会变得有些“啰嗦”。非常适合嵌入式编程和在尝试使事情非常高效时。

C++基本上将C语言转化为面向对象编程语言。语法略有不同,但总体上非常相似。这使得更高级别的编程更容易,同时仍然能够编写高效的代码。适用于编写游戏引擎等内容。需要高效率,但没有OOP编程将是痛苦的。

C#在我看来与其他两种语言最不相似。它具有类似的语法,但几乎完全是OOP。它适用于编写.NET应用程序。它适用于快速编写GUI,在Windows和Web开发中都很好用,在效率不是目标而是尝试快速推出产品的情况下。


0

我从C ++背景开始,曾经在C ++ Windows应用程序上工作了四年左右,后来转向了C#。我可以告诉你,C ++和C#在语法上非常相似。然而,C#具有一些很酷的简写功能,在C ++中不可用。

在我看来,最大的区别不在语法上,而是在库、框架或者你想叫什么东西上——忽略托管C ++。当你使用C ++编码时,通常需要决定你要针对哪个平台以及你计划使用哪种类型的库。当我使用C ++时,我使用Microsoft Foundation Libraries。但是还有很多其他选择。此外,使用C ++时,您还有更多的选择,可以决定使用哪种类型的IDE。使用C#时,除非您使用Mono进行编码,否则通常只需使用Visual Studio和.Net框架。

此外,由于C#使用非常丰富的.Net框架,因此可以轻松编写通常为C ++世界中的专家保留的程序。当然,您也可以选择使用托管C ++,它使用.Net框架,但我必须问:为什么呢?

我故意在讨论中省略了C,因为我从未在专业水平上使用过它。 尽管如此,我可以说,我所看到的少量C代码非常难看。这不仅是因为它是过程性的,还因为许多编码标准非常精确但难以阅读。 我认为这并不一定是必须的,只是通常以一个非常难以阅读的风格编写。 这也可能是由于我有很长时间使用面向对象编程的经验。

0

把C语言看作是在C#中执行所有操作的一个巨大的静态类。

你可以使用指针传递数据(在C#中也可以这样做)。我发现大多数人被指针绊倒了。

你可以通过创建结构体来创建新类型(就像在C#中一样)。

如果你想学习C语言,那就假装C++不存在吧 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接