看你的需求,如果是底层开发,就必须学习C语言。如果只是应用开发,可以直接从C++开始学习。实际上这两个语言是平等的,只是在语法上C++尽量与C兼容,但仍然有很多不同的地方。
1) C++不是C的超集。也许最初诞生的时候可以这么认为,但是当1998年ISO制订了C++的标准之后,C++和C就是没有太大关系的两种语言了。C++中包含了尽量与C兼容的子集。
2) 如果你选择了一本好书,学C++之前完全没有必要学C,即使是对C一窍不通也没有问题。过去的很多C++的书籍都是假设读者有C的基础,在此情况下,当然有必要选择先学C。
3) 至于学C++要懂一定的编译、操作系统、数据结构。那与C和C++无关,如果非学不可,那么学PASCAL也要学,学java也要学,任何学编程的都要学。数据结构是编程的必修课,但是操作系统和编译原理只能是选修课。