i++是先进行运算在加一,++i是先加一再进行运算

i--是先进行运算在减一,--i是先减一再进行运算

为什么一模一样的程序反而运行的结果却又如此大的差异????

此时我们从简单开始进行分析

正常我们的运算是,9,10,11,12

由上图我们可以看出,和正常的算法是不同的

而该图我们可以得知编译器是从右往左进行运行的

若按正常的计算来说,12,10,10,9,根据上图,我们不难看出,++i的值是一致的,且一最后一个为准,所以说为12,10,12,12

同理

该图正常算法,输出结果应该为,11,11,10,9,但是i++是先参与运算在加一,所以其储存的i=12,所以结果又变为了11,12,12,12.

此时我们根据上图可以发现,i++的值是不变的

由此我们会发现,++i,以最后的i的值为结果,而 i++是以正常的,本来的结果为准

这时我们继续研究i--,--i

我们惊奇的发现,--i竟然也不是正常算法,且与++i极其相似,结果一致性

而i--呢,是正常算法,且编译器从右往左

于是我进行了如下操作

正常计算的话,先进行i--,结果为8,然后--i,结果为6,接着i--,结果仍为6,i--结果为5,但是此时储存i的值是4,因为i--是先进行运算再减一,也就是先输出原来的值,i的值再减一

同理这几个程序,我们发现--i是以最终的i的结果为答案,而--i是以正常运算的结果为准,那么当我们将集中表示混合起来时,规律是否成立

Int i=8;                                    编译器输出             正常算

  1. printf(“%d,%d,%d,%d/n”,++i,++i,--i,--i)     8,8,8,8                8,7,6,7
  2. printf(“%d,%d,%d,%d/n”,++i,--i,--i,--i)       6,6,6,6                6,5,6,7
  3. printf(“%d,%d,%d,%d/n”,i++,i++,i--,i--)     7,6,7,8                7,6,7,8
  4. printf(“%d,%d,%d,%d/n”,i++,i--,i--,i++)     7,8,9,8                7,8,9,8
  5. printf(“%d,%d,%d,%d/n”,i++,i--,++i,i--)     7,8,8,8                7,7,8,8
  6. printf(“%d,%d,%d,%d/n”,++i,i--,i++,--i)              8,8,7,8                8,8,7,7

由此我们总结出结论

符号在前面的,一律为最终的i, 符号在后面的,一律正常计算

由此我们就可以解释这个问题了

首先我们进行从右往左进行运算,得到的结果为

输出                  i

-i--=-(i--)              -8                     7

-i++=-(i++)           -7                     8

i--                          8                     7

i++                        7                     8

--i                          7                     7

++i                        8                     8                    i=8

对于这种计算,我总结了一个规律,

符号在后直接输出,i的值要变的,符号在前,i经过加减后再输出

8,7,7,8,-7,-8

按照规律即为8,8,7,8,-7,-8

你学会了吗?

关于printf(“%d,%d“,i--,i++)的问题相关推荐

  1. 关于C语言中printf函数“输出歧视”的问题

    目录 关于C语言中printf函数"输出歧视"的问题 问题描述 探索问题原因 另一种研究方法 问题结论 关于C语言中printf函数"输出歧视"的问题 问题描述 ...

  2. Go 学习笔记(46)— Go 标准库之 fmt(输入/输出格式化参数、Printf/Fprintf/Sprintf区别、Println/Fprintln/Sprintln 区别)

    1. 概述 import "fmt" fmt 包实现了类似 C 语言 printf 和 scanf 的格式化 I/O .格式化动作( verb )源自 C 语言但更简单. 2. P ...

  3. c语言字符串 s,c – printf格式字符串中“% – *.* s”的含义是什么

    你可以在这里阅读printf的手册页: http://pubs.opengroup.org/onlinepubs/009695399/functions/fprintf.html.但是它更像是法律文本 ...

  4. printf格式化输出几点注记

    搞了很多年c/c++,有很多细小的东西,曾经不止一次遇到,可是一直都是放在零散的地方,要用的时候怎么也找不到,今天,我痛下决心,改掉不良习惯,把这些经验或是tips记录在这里,便于日后查找. 1.在统 ...

  5. PHP函数printf()、sprintf()的用法

    printf()函数优点在于可以格式化输出 格式: %['padding_character][-][width][.precision]type 所有的转换说明都是以%开始,如果想打印一个%符号,必 ...

  6. printf(%d, -10u); 这个输出什么呀, 0或1?

    printf("%d", -1<0u); 这个输出什么呀, 0或1? 周银辉 既然我这么问了, 那么答案自然不是1,而是0 看看下面的代码: 对于-1+0u输出为-1,似乎理 ...

  7. fprintf、printf、sprintf、fscanf、scanf、sscanf 格式化输入输出

    格式化输入输出 1.         fprintf(格式化输出数据至文件) 相关函数  printf,fscanf,vfprintf 表头文件  #include<stdio.h> 定义 ...

  8. 【C】printf warning: unknown conversion type character ‘l‘ in format [-Wformat=]

    1.问题描述 在使用printf.fprintf打印long long类型时报错 printf warning: unknown conversion type character 'l' in fo ...

  9. 【linux】printf在终端打印彩色hello world

    代码 #include <stdio.h>#define NONE "\033[m" #define RED "\033[0;32;31m" #de ...

  10. c语言自定义char*函数返回值是乱码_[每日C语言」printf()函数的修饰符和返回值...

    在上一个小demo<printf()函数(1)>中主要说了一下printf()函数的转换说明符,这些转移说明符是可以被修饰的.我们可以在%d和定义的转义字符之间通过插入修饰符对基本的转换说 ...

最新文章

  1. 频频转型的蘑菇街,能讲好直播这个“老故事”吗?
  2. spring源码构建以及模块划分和依赖
  3. 探索Julia(part10)--自定义函数
  4. 多生产者_你是生产者还是消费者?这决定了你的层次。
  5. 鹦鹉助手模拟器 梦幻西游 找不到服务器,模拟器玩梦幻 17173鹦鹉助手模拟器上线...
  6. JSON跨域解决方案收集
  7. Centos 下Nginx 自启动脚本
  8. 深度学习TF—13.对抗生成网络—GAN
  9. Android虚拟键盘上下左右键按下和弹起的响应事件
  10. android服务之service(其二)关于aidl进程间通信,Android初级教程进程间的通信AIDL
  11. 简化Simulink的建模与模型重构
  12. 在线java编译器_五个免费在线Java编译器,轻松编译代码
  13. 系统集成项目管理工程师必考公式
  14. 用u盘安装mysql,奥维互动地图企业服务器基本环境安装 ——U盘引导安装CentOS 6.5...
  15. Ueditor编辑器如何改变上传图片大小限制
  16. MAC-重新安装系统的三种方法
  17. 震惊!AI居然轻松消除马赛克-文字增强,GitHub开源项目上线三天收获近7000星
  18. DAP数据分析平台可视化组件开发
  19. 网关(Gateway)
  20. 使用BAT脚本批量修改文件名的方法

热门文章

  1. elgamal签名算法c语言,ELGamal数字签名.doc
  2. cad如何修改新的文字注释?
  3. qq一笔画c语言,qq红包一笔画图形大全答案合集下载
  4. 核模型(核密度估计)
  5. 计算机化系统管理及验证ppt,完整计算机化系统验证.ppt
  6. jdk安装与配置环境
  7. 人力资源的统统都来学习一下
  8. mysql汉化-workbench汉化-xml文件
  9. 六个经典的PHP加密解密算法
  10. uniapp文字不显示