温故而知新_C语言_前缀++(--)和后缀++(--)
前缀++(--)和后缀++(++)是有区别的。
再单独使用的时候是没有区别的,都是自身递增或者递减1.
但是综合使用起来会一样吗?
下面的例子都是++,替换成--也是一样,道理都是一样的。
请先看下面例子:
#include<stdio.h>
int main(void)
{
int a=,b=;
a++; //后缀++
++b; //前缀++
printf("a++ is %d\n",a );
printf(" ++b is %d",b ); }
出来的结果都是1.

既然结果都一样,那说个P啊!
呵呵
是吗,那么看下面的例子。
#include<stdio.h>
int main(void)
{
int a=;
int b=; int c=++a*;
int f= *b++;
printf("c=%d a=%d\n", c,a);
printf("f=%d b=%d",f,b);
}
如果按照上面的说法,他们的值都应该是是5。
但是结果?

什么结果?
a =1,b=1
c=5 f=0
是不是奇怪在f为什么是0?
还是要考虑他们的(前缀++和后缀++)的运算方式:
假设
int i=0 ;int A;
A=i++*5
A=0
*********************************************************
int i=0 ;int B;
B=++I*5;
B=5
第一种是 I与5相乘并将值赋予A,之后I在递增1
第二种是 I递增1在于5相乘并将值赋值与B
***************************************************************
也就是前缀(++)(--)会先递增/递减并在执行表达式
而后缀呢? 是先让执行表达式并赋值后,在执行递增/递减(也就是后缀的影响到其本身5*i++,只影响到I,并且还是在表达式全部完成后)
值得一说的是,递增/递减只会影响到一个可以修改的左值。在括号的作用下也是白扯。
x*y++等于(x)*(y++)=x*y,然后再y++
而不是等于(x*y)++,因为x+y并不是一个可以修改的值
他们之间的优先级也是不一样的。前缀的(++)(--)优先级要比后缀的(++)(--)优先级要高。
在使用递增/递减的时候要考虑前缀和后缀的区别。
温故而知新_C语言_前缀++(--)和后缀++(--)的更多相关文章
- 温故而知新_C语言_递归
递归. 是的,差不多就是这种感觉.上面就是类似递归的显示表现. 2017 10 24更新: 递归这个问题放了很久.也没有写.大概是自己还没有好好理解吧. 在这里写下自己理解的全部. 一 何为递归. 字 ...
- 选择排序_C语言_数组
选择排序_C语言_数组 #include <stdio.h> void select_sort(int *); int main(int argc, const char * argv[] ...
- 插入排序_C语言_数组
插入排序_C语言_数组 #include <stdio.h> void insertSort(int *); int main(int argc, const char * argv[]) ...
- 快速排序_C语言_数组
快速排序_C语言_数组 #include <stdio.h> void quickSort(int *, int, int); int searchPos(int *, int, int) ...
- 冒泡排序_C语言_数组
冒泡排序_C语言_数组 #include <stdio.h> //冒泡排序 小->大 void sort(int * pArray, int len); int main(int a ...
- 温故而知新_C语言_define_宏
define defi ...
- 数据结构_C语言_二叉树先序、中序、后序遍历
# include <stdio.h> # include <stdlib.h> typedef struct BiTreeNode { char data; struct B ...
- 数据结构_C语言_单链表
# include <stdio.h> # include <stdbool.h> # include <malloc.h> typedef int DataTyp ...
- 【书籍下载链接】_1_第一轮_C语言书籍
各位朋友,如果您觉得下载的电子书,看的还可以,请购买纸质版的图书,如果您觉得 您下载的书,不值得一看请在下载后直接删除. Windows汇编:http://dl.vmall.com/c0jk1v970 ...
随机推荐
- 通过Python查看Azure VM的状态
Azure的管理平台采用Restful API的方式实现管理.比如获取VM的管理API的各种操作的文档请参考: https://docs.microsoft.com/en-us/rest/api/co ...
- laravel 接收json串
在做项目的时候发现 用平时的$request->all() 无法获取到请求值 然后这样解决了 但是还是不知道原因 学习源头: http://www.cnblogs.com/anjuncc/p/5 ...
- Java 字符串和时间互相转化 +时间戳
一:字符串转换成date String datatime="2015-09-22 15:16:48"; SimpleDateFormat form = new SimpleDate ...
- 新建一个Model类的注意事项
昨天在工作中新建了一个Model类在测试环境测试一点问题也没有,到了生产环境就报错了,由于调用的是分页类,报错说:在520行 _count() 函数不存在. 我的思路是:先到生产环境查看了具体的报错文 ...
- Day3-Python基础3--默认参数和参数组
一.默认参数 先看下下面的代码: def stu_register(name,age,country,course): print("----注册学生信息------") prin ...
- 2014.10.1 Word技巧
设置每页都出现的表头 wordDoc.Tables[tab].Rows[1].HeadingFormat = (int)Word.WdConstants.wdToggle; //合并单元格 wordD ...
- 11-24网页基础--Js基础语法
1.运算符 比较运算符(7种):==/===/!=/>/</<=/>= ===(全等于) 2.字符串substring的用法 3.练习题:累加求和(运用Js的方法) 4.进制转 ...
- 反向索引(Inverted Index)
转自:http://zhangyu8374.iteye.com/blog/86307 反向索引是一种索引结构,它存储了单词与单词自身在一个或多个文档中所在位置之间的映射.反向索引通常利用关联数组实现. ...
- CALayer的基本使用
CALayer需要导入这个框架:#import <QuartzCore/QuartzCore.h> 一.CALayer常用属性 属性 说明 是否支持隐式动画 anchorPoint 和中心 ...
- 用JS 写一个简单的程序,切换七彩盒子背景
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...