首页 > 其他分享 >C语言i++和++i操作

C语言i++和++i操作

时间:2024-07-25 19:59:53浏览次数:11  
标签:编译 ret2 ++ sum C语言 int ret1 操作

关于++混合操作,不同计算结果推理

第一种编译结果:

int i = 5;

int sum = (++i) + (++i)

= 6 + 7

= 13

第二种编译结果:

int i = 5;

int sum = (++i) + (++i)

= 6 + 7

= 7 + 7 前面的7是因为后面i的变化被影响后,重新赋值

= 14


第一种编译结果:

int i = 5;

int sum = (++i)+(i++)

= 6 + 6

= 12

第二种编译结果:

int i = 5;

int sum = (++i)+(i++)

= 6 + 6

= 7 + 6 前面的7是因为后面i的变化被影响后,重新赋值

= 13


int i = 5;

int sum = (i++) + (i++)

             =5 + 6

             =11


int i = 5;

int sum = (i++) + (++i)

             =5 + 7

             =12

在虚拟机gcc编译,当++i在前会被后面的i影响,i++在前不会被影响。

#include<stdio.h>

int main()
{
    int i = 3;
    int ret1 = (i++)+(i++);
    printf("ret1:%d,i:%d\n",ret1,i);
    
    int ret2 = (i++)+(++i);
    printf("ret2:%d,i:%d\n",ret2,i);

    return 0;
}

/***********************************
输出结果:
ret1:7,i:5
ret2:12,i:7
************************************/

注意:

算数运算符,运算结果是数值类型

关系运算符,运算结果是boolean类型(其实就是int的 0-假,非0-真)

逻辑运算符,运算结果是boolean类型(其实就是int的 0-假,非0-真)

标签:编译,ret2,++,sum,C语言,int,ret1,操作
From: https://blog.csdn.net/weixin_64313142/article/details/140698514

相关文章

  • 学懂C语言(二十五):深入理解 C语言结构体 位域 的概念
            目录一、位域的基本概念二、位域的定义三、位域的内存分配和大小计算示例1:简单位域示例2:跨越多个存储单元注意事项结构体对齐控制总结        C语言中的位域(Bit-Field)是一种特殊的数据结构,允许在结构体中定义占用特定位数的成员,主要用于节......
  • C++设计模式汇总
    李忠建老师讲授设计模式笔记更新到抽象工厂模式:组件协作类:模板方法策略模式观察者模式单一职责类:装饰器模式桥模式模式对象创建类:工厂方法抽象工厂方法原型模式构建器模式对象性能类:单例模式享元模式接口隔离类:门面模式代理模式适配器模式中介者模式状态变......
  • C++学习笔记-operator关键字:重载与自定义操作符
    在C++编程中,operator关键字扮演着极其重要且独特的角色。它允许开发者为内置类型或自定义类型重载或定义新的操作符行为。这一特性极大地增强了C++的表达能力,使得代码更加直观、易于理解和维护。本文将深入探讨C++中operator关键字的使用,包括操作符重载和自定义操作符的基本......
  • 设计模式C++001__模板方法
    设计模式C++001__模板方法“组件协作”模式:现代软件专业分工之后的第一个结果就是“框架与应用程序的划分”,组件“协作”模式通过晚绑定,来实现框架与应用程序之间的松耦合。包括:模版方法,观察者模式,策略模式1、模板方法模式:动机:在软件构建过程中,对于一项任务,它常常有稳定的整......
  • 设计模式C++002__策略模式
    设计模式C++002__策略模式1、动机:在软件构建过程中,某些对象使用的算法是多种多样的,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。?如何在运行时根据需要透明地更改对象的算法?将算法与对象本身解耦,从而避免上述问题?......
  • 设计模式C++003__观察者模式
    设计模式C++003__观察者模式1、动机:在软件构建过程中,我们需要为某些对象建立一种“通过依赖关系”--一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使得软件不好抵御变化。?使用面向对象技术,可以将这种依赖关系弱化,并形成......
  • 设计模式C++004__装饰器模式
    设计模式C++004__装饰器模式在软件组件设计中,如果职责划分不清晰,使用继承得到的结果往往会随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候关键是划清责任。单一职责模式分类中的设计模式:装饰器模式,桥模式1、装饰器模式:动机:在某些情况下,我们可能会“过渡地使用继承来扩......
  • 设计模式C++005__桥模式
    设计模式C++005__桥模式也是组合模式的具体体现。1、动机:由于某些类型的古有的实现逻辑,使得他们具有两个变化的维度,乃至多个维度的变化。?如何应对这种“多维度的变化”,如何利用面向对象技术来使得类型可以轻松地沿着两个乃至多个方向变化,而不引入额外的复杂度。2、桥模式:将......
  • 设计模式C++007__抽象工厂方法模式
    设计模式C++007__抽象工厂方法模式抽象工厂方法1、动机:在软件系统重,经常面临着“一系列相互依赖的对象”的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作。?如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种封装机制,来避免客户程序和这种“多系列具体对象......
  • C语言:字符串函数、内存函数剖析
    字符串函数、内存函数剖析一、字符串函数(一)求字符串长度1、strlen(1)库函数实现(2)自定义实现(二)长度不受限制的字符串函数1、strcpy(1)库函数实现(2)自定义实现2、strcat(1)库函数实现(2)自定义实现3、strcmp(1)库函数实现(2)自定义实现(三)长度受限制的字符串函数介绍1、strncpy2、s......