设为首页 加入收藏

TOP

问题1 C啊,多少C++假汝之名而行--C、C++不分(2)
2013-10-07 15:32:56 】 浏览:6243
Tags:问题 多少 --C ++不分

问题1  C啊,多少C++(www.cppentry.com)假汝之名而行--C、C++(www.cppentry.com)不分(2)

单击OK(确定)按钮后项目中会出现以下4个文件:

FirstCProgram.cpp  StdAfx.h

StdAfx.cpp   ReadMe.txt

其中,FirstCProgram.cpp是程序的主文件,此程序的main()函数就在其中,也是用户编写代码最多的地方。

3.编写自己的代码

双击FirstCProgram.cpp文件,出现其内容文本框。在其中输入"Hello,World"程序的代码。程序清单如下:

  1. // FirstCProgram.cpp :Defines the entry point for the console application  
  2. //  
  3.  
  4. #include "stdafx.h"  
  5. #include "stdio.h"  
  6.  
  7. int main(int argc, char *argv[])  
  8. {  
  9. /*使用printf()函数输出"Hello,World"*/  
  10. prinrf("Hello,World!\n");  
  11. return 0;} 

然而,实际上这样最后得到的这段源程序根本不是C语言源程序,而是C++(www.cppentry.com)语言源程序。代码中第一行的注释尽管写着"FirstCProgram",但是".cpp"才是这段代码的本质。cpp是C plus plus的缩写,C++(www.cppentry.com)语言源程序的扩展名通常都为".cpp"。

这玩笑恐怕有点开大了,作为C语言书籍的作者,居然自己都不清楚自己写的根本不是C语言代码。

无独有偶,某"主流"C语言教科书在讲解C99中的_Bool数据类型时,由于所使用的编译器(Visual C++(www.cppentry.com) 6.0)并不支持C99,于是建议读者:

把文件名后缀改为.cpp作为C++(www.cppentry.com)程序运行。

无疑,这也是错误的。C++(www.cppentry.com)与C语言是两种语言,披着羊皮的狼依然是狼而不是羊。试图通过C++(www.cppentry.com)程序来理解C语言这种办法不仅毫无意义,而且很危险。因为这样会导致对C语言的误解。

由于这种混乱不清,导致很多更加错乱的谬误。比如某"主流"C语言教材中竟然将"(a=3*5)=4*3"这样错误的C语言表达式作为正确的C语言表达式来进行讲解分析。

请分析下面的赋值表达式:

(a=3*5)=4*3

先执行括号内的运算,将15赋给a,然后执行4*3的运算,得12,再把12赋给a。最后a的值为12。读者可以看到:(a=3*5)出现在赋值运算符的左侧,因此赋值表达式(a=3*5)是左值。请注意,在对赋值表达式(a=3*5)求解后,变量a得到值15,此时赋值表达式(a=3*5)=4*3相当于(a)=4*3,在执行(a=3*5)=4*3时,实际上是将4*3的积12赋给变量a,而不是赋给3*5。正因为这样,赋值表达式才能够作为左值。

这段论述是完全错误的。在C语言中,赋值表达式并非左值,因而"(a=3*5)=4*3"在语法上就是错误的,甚至根本无法编译;然而在C++(www.cppentry.com)语言中,赋值表达式却是左值。由于误把C程序作为C++(www.cppentry.com)程序编译,就会产生"(a=3*5)=4*3"是合法的C语言表达式那样的误解。

这种误解和误用还会导致其他一些不必要的禁忌。比如某教材郑重地告诉读者:

由于class是C++(www.cppentry.com)的关键字,用Visual C++(www.cppentry.com)时不应该用class作为成员名。

实际上,使用Visual C++(www.cppentry.com)编译C代码时使用class作为标识符没有任何问题。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇问题1 C啊,多少C++假汝之名而行-.. 下一篇3.5.5 定义拷贝构造函数(1)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目