您好、欢迎来到现金彩票网!
当前位置:彩70 > 符号常量 >

C语言的自加自减运算符

发布时间:2019-07-19 23:22 来源:未知 编辑:admin

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  y++相当于:y; 其它语句... y=y+1;也就是使用它时,它的值不变,在其使用之后的某一时刻但在再次使用它前其值加一。而且不同的编译器不一定有一致的实现行为。

  a=(y++)+(y++)+(y++) 这是一条语句,通常的编译器实现会将此语句一次性扫描完成。这种情况下,y++会保持其值不变,此语句完成后,将y的值递增3次。

  b=(++y)+(++y)+(++y)这也是一条语句,编译器扫描完此语句后,先将y递增3次,再作+运算,将运算结果赋予b,此时b应该为24。 但是不同的系统及编译器不一定这样实现,还有可能y依次递增,其结果是21。但是在VC里面编译执行的时候结果是22...而且单独执行b=(++y)+(++y);的时候结果是14...

  展开全部这两个都是未定义行为,因为(y++)+(y++)+(y++)里面没有顺序点,所以你无法保证执行完第一个y++之后,y的值是否增加了,如果增加了,那么第二个y++就会是6。

  只有顺序点才能确定一个副作用被实现,在这里,副作用就是确保y++之后,y加1。

  C/C++语言定义(语言的参考手册)明确定义了顺序点的概念。顺序点位于:

  1. 每个完整表达式结束时。完整表达式包括变量初始化表达式,表达式语句,return语句的表达式,以及条件、循环和switch语句的控制表达式(for头部有三个控制表达式);

  3. 函数调用中对所有实际参数和函数名表达式(需要调用的函数也可能通过表达式描述)的求值完成之后(进入函数体之前)。

  七彩虹科技成立于1995年,中国著名的DIY硬件厂商, 亚太区最重要的显示卡提供商之一。专注于IT硬件产品研发、生产和销售,致力于为个人和企业用户提供最具创新与实用价值的硬件产品及应用方案。从左往右看,比如++m,就是m的值先自加1,再调用,而m++就是先调用m,再自加1. 举个例子 #include stdio.h main() { int a=1,b=1; printf(%d,%d,++a,b++); //输出就是2,1 } a的值先自加1,再调用,而b++就是先调用m。 --m m-- 同样的意思,只不过是减法而已

  如果你只是使用a=y 或b= y的话,语句是完全没有问题的。但同一语句把y自增了多次,ISO ANSI C 没有给出标准,在不同编译器上的结果就可能不同。自增这样的操作符虽然能写出简洁的代码,但滥用的话可能带来很多问题哦。你最好把它分成几条语句,就绝对没有歧义了。《C Primer Plus》讲解得很清楚

http://hayleylord.com/fuhaochangliang/784.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有