谭浩强老师的C语言程序设计一书中有如下程序:
j=5;q=(++j)+(++j)+(++j);printf("%d",q);
在turbo c中结果为24(同书中结果),在vc++ 6.0中结果为22。
意味着在turbo c中编译时,会将整行读完,运算3个++j之后再算q;
而VC++先运算头两个++j(第一步加法的加数),再相加,再运算第三个++j,再计算出q值。
为了测试,将程序改为
j=5;q=0+(++j)+(++j)+(++j);printf("%d",q);
结果不变,也就是说VC++依然头两个++j(头两步加法的加数)
改为 j=5;q=j+(++j)+(++j)+(++j);printf("%d",q);
在turbo c中结果为32(4个8相加),在vc++ 6.0中结果为27(6+6+7+8),此时VC++又先处理第一步加法的加数了。
完整猜测如下:
turbo c的编译方式 是将整行读完后再运算;
VC++则是分步计算,类似于用栈进行四则运算的方法,并且预读的不是第一步运算,而是头两个变量。
跪求高人从编译器的编译方式角度给予原理性的解答!
另外二级C是用TC么?程序员考试(软考)用什么环境?
从结果上我可以分析出两个编译器间的差别,希望诸位的答案能给出编译器源码上的证明!个人是因为爱好和好奇心而非过级。。。
参考资料:http://www.chineselinuxuniversity.net/articles/19490.shtml
求高人解答:同一段程序在vc++ 6.0与turbo c运行结果不同的问题
造成这种结果 是 C语言在 ++j 定义上 的不严密性 造成的。q=(++j)+(++j)+(++j); 这同编译器编译时 的优化处理方式有关。VC++ 编译 时, 若编译选项 选用 优化 \/O1 或 优化 \/O2 ,结果 为 24 \/O1 minimize space 省空间优化 \/O2 maximize speed 使运算速度最快优化 默认结果为...
为什么turboc与vc++6.0运行结果不一样
虽然 c++与c 不同 但是 c++能识别c的语法 所以你说的情况不会出现 我用vc++6.0 帮你运算过了 没有出错的 建议你换个 vc++
为什么VC6.0 与Turboc2.0运行结果不一样
有的编译器是从左往右解释,那就是 655,从右往左解释就是 555。老谭的 C 语言书中已经说明了这个问题,并指出不要写出让人难以理解也不知道编译器会如何解释的代码来。对于你这种情况,还是换一种安全方式来写,比如多定义几个变量。
在vc++6.0环境下运行c程序和在turboc2.0下的区别?
3.VC++和TC的一些类型大小不一样,对结构体等的字节边界对齐也有所不同.4.两者对C语言标准的支持程度不一样,TC来说实现得并不大标准.但两者都并不支持较新的C99标准.5.VC++编译器的代码优化做得比较好,TC不详.不过两个不同平台的编译器,恐怕也难以做出比较.6.VC++可以开发WIDNOWS程序,但不能做...
在vc++6.0环境下运行c程序和在turboc2.0下的区别?
3.VC++和TC的一些类型大小不一样,对结构体等的字节边界对齐也有所不同.4.两者对C语言标准的支持程度不一样,TC来说实现得并不大标准.但两者都并不支持较新的C99标准.5.VC++编译器的代码优化做得比较好,TC不详.不过两个不同平台的编译器,恐怕也难以做出比较.6.VC++可以开发WIDNOWS程序,但不能做...
VC++ 6.0和Turbo C 3.0有什么区别?VC++是不是Visual C++?TC的程序能在...
turbo c3.0和vc6.0类似 差不多VC++是Visual C++的简称TC的程序在VC上写 一般编译可以通过 但无法运行
vc++6.0与turbo c的区别
如果考试要求用vc++6.0,我觉得还是使用vc++6.0比较好一些,两个的环境毕竟不同。在turbo c 中写的程序直接复制到VC++中能直接用。
vc++6.0编译C和TURBOC编译C的区别在哪里
TurboC 软件本身很小方便安装和下载,只能运行C程序 VC++ 6.0 也可以运行C程序,软件比较大几百MB,VC不光可以运行C也可以运行C++程序,而且可以写可视化程序等等,功能十分强大 vc操作起来比turboc要方便的多,可以很方便的复制,粘贴,而且提示信息也要明显的多,也十分方便调试程序,建议使用VC++,...
tuber C和vc++6.0的区别
这些都是各种高级工具,在不同的阶段不同的场景下选择合适的工具即可。turbo c 初学入门使用(turbo c里面自带很多教程文档)vc++6.0和DEV C++ 做课程设计这种规模的开发时使用。入门也可以使用,没有文档,只有MSDN,属于专业文档,并不通俗易懂,需要有一定基础。VS系列,大型应用软件实际开发时使用。...
简述Turbo C 2.0 与 Visual C++ 6.0 的区别
turbo C 在 C++图形界面和应用Application方面要差的很多 VC很庞大,可以建立任何想要的工程文件 可以创建mfc 等 这是tc所不具备的(好像是,turbo C 用的不是很久没发现这些,具体有没有还得问高手)最早的时候,我就是使用的turbo c,后来改用 VC++ 个人感觉还是VC好用的多 至于所谓的语法问题 都...