计算机常用知识_VC_TC_printf中++和--说明

转载 2013年12月05日 01:58:59


其实是这样的

1. vc和tc的输出表达式里运行的顺序都是右到左

2. vc在遇到输出表达式里有a++这样的语句时是这么处理的

   输出a

   等输出表达式结束在执行a=a+1;

而tc则是在输出表达式先按照右到左的顺序执行,当碰到a++的时候先做a=a+1,然后再继续按照右到左的顺序执行

为了说明这个东西我给你设计了一些代码方便你理解

说明第一点的代码:

tc代码如下:

#include <stdio.h>

void main()

{

    int b = 2;

    printf("%d%d %d\n", b=b+1,b=b+1,b=b+1);

    getch();

}

结果为:

5 4 3

vc代码如下:

#include <stdio.h>

void main()

{

 int b = 2;

 printf("%d %d%d\n",b=b+1,b=b+1,b=b+1);

}

结果为:

5 4 3

这样就看出结合性了都是右到左

 

说明第二点的代码:

tc代码:

#include <stdio.h>

void main()

{

    int b = 2;

    printf("%d%d %d\n",b,b++,b);

   printf("%d\n",b);

    getch();

}

结果:

3 2 2

3

vc代码:

#include <stdio.h>

void main()

{

 int b = 2;

 printf("%d %d%d\n",b,b++,b);

 printf("%d\n",b);

}

结果:

2 2 2

3

这里看出最后在输出语句结束后都的到了b=b+1的结果第2个输出语句的结果3

但是第一个输出语句的结果说明tc在输出语句里就执行了b++,而vc则没有在输出语句里执行b++,其实他隐含着在这个输出语句后还有一个b=b+1;是你看不到的。

你还可以在vc里用

#include <stdio.h>

void main()

{

 int b = 2;

 printf("%d %d%d\n",b++,b++,b++);

 printf("%d\n",b);

}

来看看结果是不是

2 2 2

5

如果你能理解到

#include <stdio.h>

void main()

{

 int b = 2;

 printf("%d %d %d\n",b,b,b);

 b++;

 b++;

 b++;

 printf("%d\n",b);

}

这样的代码时,就说明你已经明白了。

到这 你完全可以自己解释你提出的问题了

这里提醒一下,tc vc在输出语句里碰到++a这样的语句时,都是在输出语句里直接解决的。

 

 

tc vc printf的执行顺序都是右到左

说明这个问题的设计如下:

#include <stdio.h>

void main()

{   

    int b = 1;

    printf("%d %d\n",b++,b++);

 printf("%d\n",b);

 printf("%d %d %d%d\n",b++,b++,b=50,b++);

 printf("%d\n",b);

}

tc结果

2 1

3

51 50 50 3

52

vc结果

1 1

3

50 50 50 3

53

 

 

++x 在vc tc 中都一样 在printf中就解决 先x=x+1 在显示x(如果有对应的现实位)

 

可以用

#include <stdio.h>

void main()

{   

    int b = 1;

    printf("%d%d\n",++b,++b);

 printf("%d\n",b);

 printf("%d %d %d%d\n",++b,++b,b=50,++b);

 printf("%d\n",b);

}

在tc vc中测试 结果都应该一样

3 2

3

52 51 50 4

52

 

在提示一下 因为库函数原型我们看不到 所以遇到这样的问题 只有通过上面这样的逻辑推理来推想库函数的执行过程 tc vc 编译器的稍微不同就得到不同结果,提示大家 写程序一定要规范 这样的语法结构型不应该出现在开发代码中,如果你是程序员,你会非常危险的弄不好,就为了这段代码你的工作就没了......现在在搞开发的朋友一定深有体会...

在学习中能够想到这么去比较编译器,还是不错的值得鼓励.但不要把时间都浪费在这上,祝愿大家进步!

碰到问题要用代码去说明 不要凭空想象,这样做很危险!

这里我做的解释,是一个合理的推论,实际的源码我们看不到,所以可能跟真实的代码思路还是有些出入,希望大家来指正,但要带代码来说服我!!

 

int x=3,y;

  

  y=(x++)+(x++)+(++x)+5;

  printf("%d%d\n",y,x);

  printf("%d\n",x);

 VC中结果

  15   3

6

 TC中结果/

 17  3

  6

  TC   1、将所有先++--的先抽出来计算;

2、将第一步计算的结果带入表达式中,计算表达式的值;

3、再将所有后自增自减预算抽出来进行计算;

 Int x=3,y;

 printf("%d%d\n",(x++)+(x++)+(++x)+5,x);

  printf("%d\n",x);

 VC中输出结果;

15   3

6

 TC 中输出结果

  18   3

  6

 

大学计算机科学的14个知识领域

大学级别的计算机科学知识可以归纳成14个知识领域
  • yqj2065
  • yqj2065
  • 2014年09月15日 17:37
  • 5054

计算机科学与技术本科知识体系

整个计算机科学就像人一样,有两条腿。一条叫做数学(基础),一条叫做物理(基础)。数学主要指的是离散数学,其中比较重要的是逻辑和证明、Turing论题和Churcher论题。逻辑系统用逻辑的方法描述这个...
  • z09314211
  • z09314211
  • 2016年05月16日 23:59
  • 387

计算机视觉初级部分知识体系

这两天总结了一下自己在计算机视觉初级部分的知识框架,整理如下。 个人所学并不全面(比如图像频域方面了解就比较少),仅做参考。图像点(pixel值)运算直方图; 线性/非线性变换; 灰度均衡化/规定化...
  • NNNNNNNNNNNNY
  • NNNNNNNNNNNNY
  • 2017年01月15日 14:33
  • 1409

计算机的理解(个人知识架构的形成)

现代计算机系统错综复杂,学习的时候如何将所有的知识联系在一起,形成自己的知识结构呢? 只有不断学习,不断总结。 只有总结出来的东西才是自己的东西,那么先搭个知识结构框架,以后慢慢往...
  • ktigerhero3
  • ktigerhero3
  • 2015年10月29日 17:30
  • 583

软考——计算机系统知识

总述:      软考书籍第一章节讲述的计算机系统知识系统知识,这一部分知识分为系统基础知识、体系结构、安全性,可靠性与系统性能评测基础知识。这部分知识点颇多,于是分开总结一番。 系统基础知识 这部分...
  • u013045868
  • u013045868
  • 2015年10月23日 21:37
  • 1164

计算机底层知识拾遗(一)理解虚拟内存机制

这个系列会总结计算机,网络相关的一些重要的底层原理。很多底层原理大家上学的时候都学过,但是在学校的时候大部分的同学都是为了应付考试而学习,过几天全忘了。随着工作的时间越久,越体会到这些基础知识的重要性...
  • ITer_ZC
  • ITer_ZC
  • 2015年01月12日 16:33
  • 8152

计算机底层知识拾遗(四)理解文件系统

计算机底层知识拾遗(四)理解文件系统 http://blog.csdn.net/iter_zc/article/details/43269955 操作系统的很多核心组件都是相互关联...
  • zdy0_2004
  • zdy0_2004
  • 2015年03月14日 14:33
  • 2294

计算机系统-计算机硬件及系统发展史

纵观计算机发展史,可知晓,是需求带动了发展,从古至今,一点点剖析。
  • wangpeifeng669
  • wangpeifeng669
  • 2014年07月29日 09:12
  • 926

基本涵盖计算机图形学所有知识点的一个场景

#include #include #include #include #include //#include #include //#pragma comment( link...
  • lyn38099
  • lyn38099
  • 2016年04月09日 01:44
  • 803

计算机网络基础知识和体系结构

现代社会,网络已经和水,电一样成为我们的不可或缺的日常需求了,可以说网络无处不在。作为一名用户,只需要学会如何使用网络即可,而作为一名计算机专业的学生,一名程序员有必要去深入了解其中原理。因此,本章主...
  • xy913741894
  • xy913741894
  • 2017年06月17日 21:53
  • 895
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:计算机常用知识_VC_TC_printf中++和--说明
举报原因:
原因补充:

(最多只允许输入30个字)