温故而知新_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 ...
随机推荐
- bzoj 4403 序列统计——转化成组合数的思路
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4403 先说说自己的想法吧. 设f[ i ][ j ]表示当前在倒数第 i 个位置,当前和后面 ...
- winrm service
今天看脚本忽然发现一个服务,叫winRM服务,这是个PowerShell的远程管理.开启它可以很大程度的方便用PowerShell操控! 下面是我找到的一些资料: 在Linux中,我们可以使用安全的S ...
- maven用途、核心概念、用法、常用参数和命令、扩展
设置问题解决. http://trinea.iteye.com/blog/1290898 本文由浅入深,主要介绍maven的用途.核心概念(Pom.Repositories.Artifact.Buil ...
- [我的CVE][CVE-2017-15709]Apache ActiveMQ Information Leak
问题原因: Apache ActiveMQ默认消息队列61616端口对外,61616端口使用了OpenWire协议,这个端口会暴露服务器相关信息,这些相关信息实际上是debug信息. 会返回应用名称, ...
- spring中的class配置不能使用properties中的字符串
1.比如在a.properties中我们声明了一个变量: classRoom=com.wc82.ClassRoom 2.然后在spring的配置文件中:applicationContext.xml,有 ...
- 理解configure,make,make install(笔记整理)
在Linux系统里有时候需要自己编译安装一些提供了源文件的软件,比如Nginx.一般编译的步骤是:configure -> make -> make install. 1. configu ...
- Jsonp实现跨域请求Ajax
客户端 #!/usr/bin/env python import tornado.ioloop import tornado.web class MainHandler(tornado.web.Req ...
- oracle --(三)数据段(segment)
基本关系:数据库---表空间---数据段---分区---数据块 数据段(segment)段(segment)由一系列的extent组成.通常一张表是一个segment. Oracle中的段可以分成4种 ...
- jetty分析
jetty处理过程: 1 new Server() (1)初试化线程池 生成固定大小线程数,新来的线程放入BlockingQueue. (2)初始化ServerConnector 初始化 sche ...
- 第一次WM_PAINT事件执行前显示白色框 的解决办法
界面显示前,总是会显示白色或白加黑的窗体, 开始以为是图片加载慢的原因,后来发现这个框是在第一次WM_PAINT执行前显示的. 解决办法很简单,在CreateWindow的时候,加上WS_POPUP样 ...