++i  :自增运算符

功能:i 自增1后再参与运算

#include

int main()

{

int i = 8;

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

return 0;

}

执行结果:

说明:i 先自增1 后i变为9 再将9输出

--i 自减运算符

功能:i自减1后再参与运算

#include

int main()

{

int i = 8;

printf("%d\n",i--);

return 0;

}

执行结果:

说明:i 先自减1 后再参与运算所以i的值是7

i++ :i参与运算后i的值自增1

#include

int main()

{

int i = 8;

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

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

return 0;

}

执行结果:

说明:因为i先参与运算后值自增1,所以输出的值是8,9;

i--   i参与运算后i的值自减1

#include

int main()

{

int i = 8;

printf("%d\n",i--);

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

}

执行结果:

说明:因为i 参与运算后i的值自减1,所以输出的结果是8,7

-i++  i先与负号结合再自增

#include

int main()

{

int i = 8;

printf("%d\n",-i++);‘

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

return 0;

}

执行结果:

说明:i先与负号结合得到-8然后再自增1(输出-8),在第二个输出语句中输出9

-i--:  i先与负号结合再自减

#include

int main()

{

int i = 8;

printf("%d\n",-i--);‘

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

return 0;

}

执行结果:

-(++i):  i先自增再与负号结合

#include

int main()

{

int i = 8;

printf("%d\n",-(++i));

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

return 0;

}

执行结果:

-(--i):  i先自减再与负号结合

#include

int main()

{

int i = 8;

printf("%d\n",-(--i));

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

return 0;

}

执行结果:

(i++) + (i++) + (i++)

#include

int main()

{

int i = 5;

int p = (i++) + (i++) + (i++);

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

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

return 0;

}

执行结果:

说明:这里的i++是先参与运算后再自增1

所以:p = 5 +5 + 5

有三个i++,i自增三次后得到i= 8;、

(++i) + (++i) + (++i)

#include

int main()

{

int i = 5;

int p = (++i) + (++i) + (++i);

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

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

return 0;

}

执行结果:

说明:++i  i先自增1后再参与运算

先计算(++i)+(++i)首先自增两次 i = 7

(++i) + (++i) = 14

而后就变为 q = 14 + (++i)

此时的第三个++i自增了三次变为8

q = 14 +8 = 22

i自增了三次变成了8

(i--) + (i--) + (i--)

#include

int main()

{

int i = 5;

int p = (i--) + (i--) + (i--);

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

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

return 0;

}

执行结果:

说明:这里的i--是先参与运算后再自减1

所以:p = 5 +5 + 5

有三个i--,i自减三次后得到i= 2;、

(--i) + (--i) + (--i)

--i  i先自减1后再参与运算

#include

int main()

{

int i = 5;

int p = (--i) + (--i) + (--i);

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

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

return 0;

}

执行结果:

说明:先计算(--i)+(--i)首先自减两次 i = 3

(--i) + (--i) = 6

而后就变为 q = 6 + (--i)

此时的第三个++i自增了三次变为2

q = 6 +2 = 8

i自减了三次变成了2

*p++先取指针p指向的值,再将指针p自增1

#include

int main()

{

int a[5] = {1,8,10,5,2};

int *p;

p = a;

printf("%d\n",*p++);

printf("%d\n",*p);

return 0;

}

执行结果:

说明:*p++先计算*p将*p的值输出后p自增1

所以在第二个printf中打印的是a[1]的值

*p--先取指针p指向的值,再将指针p自减1

#include

int main()

{

int a[5] = {1,8,10,5,2};

int *p;

p = &a[1];

printf("%d\n",*p++);

printf("%d\n",*p);

return 0;

}

执行结果:

说明:*p--先计算*p将*p的值输出后p自减1

所以在第二个printf中打印的是a[0]的值

(*p)++ 先取指针p指向的值(以p为内存地址的值),再将该值自增1

#include

int main()

{

int a[5] = {1,8,10,5,2};

int *p;

p = a;

printf("%d\n",(*p)++);

printf("%d\n",*p);

return 0;

}

执行结果:

说明:p = a;

*p = a[0];

*(p)++ = a[0] + 1;

但是因为i++是先参与运算后自增1

所以第一个printf()输出的是*p的值1

第二个Printf()输出的是*p+1的值 2

(*p)-- 先取指针p指向的值(以p为内存地址的值),再将该值自减1

#include

int main()

{

int a[5] = {1,8,10,5,2};

int *p;

p = a;

printf("%d\n",(*p)--);

printf("%d\n",*p);

return 0;

}

执行结果:

说明:p = a;

*p = a[0];

*(p)-- = a[0] - 1;

但是因为i++是先参与运算后自增1

所以第一个printf()输出的是*p的值1

第二个Printf()输出的是*p-1的值 0

*++p先将指针p自增1(此时指向第二个元素) *操作取出该值

#include

int main()

{

int a[5] = {1,8,10,5,2};

int *p;

p = a;

printf("%d\n",*++p)

return 0;

}

执行结果:

*--p先将指针p自减1(此时指向第一个元素) *操作取出该值

#include

int main()

{

int a[5] = {1,8,10,5,2};

int *p;

p = &a[1];

printf("%d\n",*--p);

return 0;

}

执行结果:

++*p:先取出p指向的数字,再将这个数字加1

#include

int main()

{

int a[5] = {1,8,10,5,2};

int *p;

p = a;

printf("%d\n",++*p);

return 0;

}

执行结果:

--*p:先取出p指向的数字,再将这个数字减1

#include

int main()

{

int a[5] = {1,8,10,5,2};

int *p;

p = a;

printf("%d\n",--*p);

return 0;

}

执行结果:

*(p++) :p与++先结合(而不是*)先结合,这个先是运算符跟谁结合在一起而不是时间的先后

如 t = *(p++);

等价于 t = *p;p++;

#include

int main()

{

int a[5] = {1,8,10,5,2};

int *p;

p = a;

printf("%d\n",*(p++));

printf("%d\n",*p);

return 0;

}

执行结果:

*(p--) :p与--先结合(而不是*)先结合,这个先是运算符跟谁结合在一起而不是时间的先后

如 t = *(p--);

等价于 t = *p;p--;

#include

int main()

{

int a[5] = {1,8,10,5,2};

int *p;

p = a;

printf("%d\n",*(p--));

printf("%d\n",*p);

return 0;

}

执行结果:





c语言先加后减程序,C语言中的加加减减相关推荐

  1. 如何让一个vue项目支持多语言(vue-i18n) 打包后依然可以修改语言包 并且修改后不需要重新打包

    如何让一个vue项目支持多语言(vue-i18n) 1.安装:npm install vue-i18n --save 2.在main.js中引入vue-i18n import VueI18n from ...

  2. C语言输入end时结束程序,c语言输入eof结束怎么写

    1.C语言里的EOF(结束程序)怎么用 在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file).在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件 ...

  3. c语言文件 加载内存吗,把文件中的数据加载到内存进行查找C语言实现.docx

    把文件中的数据加载到内存进行查找C语言实现 #define _CRT_SECURE_NO_WARNINGS#include#include#includechar **pp=NULL;void ini ...

  4. 如何用c语言编写炫酷烟花程序,C语言实现放烟花的程序

    这是一个利用C语言编写放烟花的程序(同时也可以播放音乐),供大家参考,具体内容如下 代码如下 #pragma once #include #include //图形界面库头文件 #include // ...

  5. c语言入门经典18个程序,C语言入门经典

    面向C语言初学者,详细且全面地讲解了C语言的各种知识,从基础知识到高级应用,由浅入深,循序渐进地引领读者掌握C语言中的各种编程技术,体会C语言的灵活与强大.同时,<C语言入门经典>着眼于应 ...

  6. python数组相减_对Python 中矩阵或者数组相减的法则详解

    对Python 中矩阵或者数组相减的法则详解 最近在做编程练习,发现有些结果的值与答案相差较大,通过分析比较得出结论,大概过程如下: 定义了一个计算损失的函数: def error(yhat,labe ...

  7. 合并的表格怎么加横线_如何在excel中文字后面加横线

    如何在excel中文字后面加横线以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如何在excel中文字后面加横线 好办啊 ...

  8. 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | DexPathList 中根据 File 加载 DexFile | loadDexFile 分析 )

    文章目录 前言 一.根据 File 加载 DexFile 二.DexPathList.loadDexFile 函数分析 前言 上一篇博客 [Android 逆向]整体加固脱壳 ( DexClassLo ...

  9. android fragment加载布局的方式,Android中Fragment的加载方式与数据通信详解

    Android中Fragment的加载方式与数据通信详解 发布时间:2020-08-22 18:55:57 来源:脚本之家 阅读:155 作者:Joah 一.加载方式 1. 静态加载 1.1 加载步骤 ...

  10. 用c语言写一个求和的程序,C语言实现两数求和

    能够使一个正确的C语言程序执行的必要顺序:上机输入与编辑源程序(.c)-->对源程序进行编译(.obj),得到目标函数-->将目标程序 与库函数链接,得到可执行的目标程序(.exe)--& ...

最新文章

  1. android 动态设置padding,Android动态设置控件大小以及设定margin以及padding值
  2. php 二叉树 与赫夫曼树
  3. Linux之特殊权限(SUID/SGID/SBIT)
  4. boost::hana::value_of用法的测试程序
  5. WebService 之 WSDL文件 讲解
  6. 清华大学《操作系统》(十二):临界区与锁
  7. Maven:构建web工程出现Failed to execute goal org.apache:maven-archetype-plugin:3.1.1:generate (default-cli)
  8. 英文数据集txt_【美股量化07篇】Python获取标普500成分股数据
  9. (PDF目录)自动生成PDF书签目录
  10. Nuvoton新唐单片机利用 CAN 总线技术解决楼宇电梯控制问题
  11. 【vn.py】SpreadTrading价差交易
  12. 树莓派 Pico ADC温度测量
  13. wifi-pumpkin/wifipumpkin3-2022-kali安装(源码编译)
  14. windows安装虚拟机(VMware)
  15. 普通话转换成方言的语音识别方法
  16. 监控文件变化 (Python—看门狗)
  17. updating java index_myeclipse右下角的updating indexes 是什么意思?
  18. 基坑监测系统详细解决方案
  19. 【网络攻防】网络扫描工具Nmap的使用
  20. iOS开发 ---- 其他控件,弹窗,滑块,菊花,步进,分段等

热门文章

  1. C# “配置系统未能初始化”
  2. python安装openpyxl库_Python openpyxl 库
  3. #(最新最全)PDB(Protein Data Bank)数据格式详解
  4. 计算机如何取消还原卡,如何关闭硬件还原卡?
  5. 全国各省市固定资本形成额数据 (1990-2018年)
  6. Shell 脚本加密工具-shc
  7. python gbk 相互转换 utf8
  8. 计算机文化书签,《计算机文化基础》EXCEL-机试[1]
  9. Matlab 边界提取
  10. htlm5实习报告_Wa zhu ti网站html5搭建设计毕业论文+html源码+实习报告+答辩问题