我在教程中读到C++包含整个C编程语言。
不过,我也读到过,在like this的一些地方
如果您学习了C++,那么您最终将学习大部分C语言,随着时间的推移,您将学习的语言之间也会有一些不同。
所以我的问题只是:
如果我非常了解C++,我最终会学习“真实的”C语言(没有任何“差异”),因为完整的C90语言包含在C++11中吗?
发布于 2015-07-19 20:08:38
不,C++不是C语言的超集。虽然C++包含了很大一部分C,但是有一些细微的差别会在你最不期望的地方严重地咬你。下面是一些示例:
void指针赋值给具体类型的变量时,C不需要显式转换。const传播有不同的规则。int规则”的东西,虽然它被C99废除了,但它出现了一些时候,需要考虑。a ? b : c = d是C中的语法错误,但在C++中被解析为a ? b : (c = d)。&*E与E完全相同,即使E是空指针。C++没有这样的保证。\0字节。(即char foo[3] = "bar"是合法的)。在C++中,数组必须至少与字符串(包括尾随的\0字节)一样长。'A'这样的字符具有int类型。在C++中,它有char类型。发布于 2015-07-19 20:10:39
如果我非常了解C++,我最终会学到“真实的”C语言(没有任何“差异”)
如果您正确地学习了C++,您可能不需要使用C中使用的许多标准技术,理论上您可以在C++中编写几乎任何C语言,除了已经引入的例外情况。然而,在现实中,您不会--或者不应该--这是因为C++是一种不同的语言,在优化使用时提供了非常不同的一组工具。
除了诸如一般语法和基本类型等非常基本的元素之外,这是两种独立进化的语言,它们应该被这样对待(学习,编程)。
发布于 2015-07-19 20:12:58
广义地说,C++语言本质上是C语言,并添加了大量面向对象的内容。几乎所有用C编写的代码都将在C++中编译和运行。
然而,语言中有几个角落是有差异的。随着时间的推移,这些语言的数量一直在缓慢增长,但是语言的变化还不够快,不足以成为一个重大的问题。
如果您只学习C++,那么是的,您最终也将学习C语言的几乎所有方面。如果您成为C++方面的专家,那么您将能够识别和理解C和C++的相似部分之间存在细微差异的地方。
https://stackoverflow.com/questions/31505402
复制相似问题