我在教程中读到C++包含整个C编程语言.
不过我也看过,在地方这样说
如果你学习C++,你最终将学习大部分C语言,并且随着时间的推移会学习一些语言之间的差异.
所以我的问题只有这个:
如果我非常了解C++,我最终会学习"真正的"C语言(没有任何"差异"),因为完整的C90语言包含在C++ 11中吗?
fuz*_*fuz 17
不,C++不是C语言的超集.虽然C++包含C的很大一部分,但是有一些细微的差别会让你在最不期望的地方咬人.这里有些例子:
void指向具体类型变量的指针时,C不需要显式转换.const传播有不同的规则.int规则"的东西,虽然已经废除了C99,但有时会出现,需要加以考虑.a ? b : c = dC中的语法错误,但a ? b : (c = d)在C++中解析.&*E完全相同.C++没有这样的保证.EE\0字节的字符串一样长.(即char foo[3] = "bar"合法).在C++中,数组必须至少与包含尾随\0字节的字符串一样长.'A'类型int.在C++中,它有类型char.C有一个特殊的规则,通过工会使打字成为合法的.C++缺乏这种语言,使得代码如此
union intfloat {
int i;
float f;
} fi;
fi.f = 1.0;
printf("%d\n", fi.i);
Run Code Online (Sandbox Code Playgroud)
未定义的行为.
如果我非常了解C++,我最终会学会“真正的”C语言吗(没有任何“差异”)
如果您正确地学习了 C++,您可能不需要使用 C 中使用的许多标准技术。理论上,您几乎可以用 C++ 编写任何 C 语言,但已经介绍过的例外情况除外。但是,实际上,您不会或不应该。这是因为 C++ 是一种不同的语言,它在最佳使用时提供了一组非常不同的工具。
除了通用语法和基本类型等非常基本的元素外,它们是两种独立发展的语言,应该这样处理(学习、编程)。
从广义上讲,C++ 语言本质上是 C,添加了一大堆面向对象的东西。几乎所有可以用 C 编写的代码也可以在 C++ 中编译和运行。
但是,语言的一些角落存在差异。随着时间的推移,这些语言的数量一直在缓慢增长,但语言的变化速度还不够快,不足以成为一个重大问题。
如果您只学习 C++,那么是的,您最终也会学习 C 语言的几乎所有方面。如果您成为 C++ 专家,那么您将能够识别和理解 C 和 C++ 相似部分之间存在细微差异的地方。
| 归档时间: |
|
| 查看次数: |
3119 次 |
| 最近记录: |