首页
学习
活动
专区
圈层
工具
发布

C语言printf中的自增运算符

先看个例子: int i=1; printf("%d====%d",++i,i++); 输出结果:3====1 是不是很意外,我开始也很意外。。。请看解析。...解析: C语言中,++i表示先运算后赋值,i++表示先赋值后运算。这个知识点相信只要会点编程的人都知道。 而C语言中,printf中自增自减运算符却有另一片天地。...// 在printf中,运算规则变为从右向左,输出规则为从左向右 /* 运算部分 */ // 由于运算是从右向左 i++ // 由于i++是先赋值后运算,会先将1赋值,最后这个位置输出肯定是1,运算后...,i=3,所以输出3 ++i // 此时i=4,输出当前值 i=4 ++i // 此时i=4,输出当前值 i=4 其实,如果运算过程中,遇到i++这样需要先赋值后运算的情况,编译器会将运算前的值存储在寄存器中...,以便在运算完成之后运行输出,所以后面输出的其实是寄存器中之前存储下来的值。

1.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java 有运算符:算术、赋值、比较、三元、逻辑、位,且看运算符优先级如何处置

    ; 两个数值相加表示数学中的加法运算; 除号(/):整数在使用除号操作时,得到的结果仍为整数,小数部分会被直接忽略,而不是四舍五入,但是当整数除以0的时候,会引发算术异常(ArithmeticException...++ 和 -- :表示所操作的变量自增1和自减1,都只能操作变量,不能操作常量; 自增:++,自增操作符,变量值自增1,有前置和后置之分,只能操作变量。...唯一的区别是: 前置(++result): 表示对result增加1之后的结果进行运算; 后置(result++): 表示对result变量值增加1之前的值(原始值)进行运算,然后再对result增加1...true结果是false,!fasle结果是true。 位运算符 Bit operator 位操作是程序设计中按位对二进制数数据的一元和二元操作。...运算符优先级 在程序设计中有众多运算符,运算符之间的操作会有先后之分,也称优先级,详情如下: 表中的优先级1 -- 14,优先级依次从高到低,同一级按表中从右到左,或者从左到右的顺序执行。

    1.3K20

    Web - JS基础语法与表达式

    关系、逻辑、赋值、自增自减)等内容。...要想使用变量,第一步就是声明它,并给它赋值,变量的值可以被改变,改变变量值不再需要书写关键字了。...NaN:NaN是英语"not a number"的意思,即不是一个数,但它是一个数字类型的值。 0除以0的结果是NaN,事实上,在数学运算中,若结果不能得到数字,其结果往往都是NaN。...NaN作为一个特殊的数字类型值,它在用==比较的时候也有特殊的结果。如何判断某变量值为NaN?isNaN函数可以用来判断变量值是否为NaN。不相等和不全等:!=表示不相等,!==表示不全等。...快捷赋值:表示在原数值基础上进一步进行运算。let a1 = 3;a1 += 5; // 等价于 a = a + 5;自增/自减运算符:++和--是自增、自减运算符,表示在自身基础上加1或减1。

    36711

    04_数据库

    1 Web架构 web总共分为三个部分: 客户端 服务器 数据库 web网站访问过程: 客户端向服务器发送请求 服务器操作数据库 数据库将结果返回给服务器 服务器将结果响应给客户端 2 数据库概念 数据库....findOne({}) 用来查询集合中符合条件的第一个文档 db..find({}).count() 查询所有结果的数量 修改集合中符合条件的文档 db.....updateOne({查询条件},{新对象}) 修改一个符合条件的文档 db..updateMany({查询条件},{新对象}) 同时修改多个符合条件的文档 db....(ODM)库,对原生的模块进行了封装,提供了更多的功能 Mongoose 优势 官方地址:http://www.mongoosejs.net/ 可以为文档创建一个模式结构(Schema) 可以对模型中的对象...查询结果结果会通过回调函数返回,参数必选,不传没有返回值 通过 find() 查询的结果,返回的对象就是 Document,文档对象 Document 对象是 Model 的实例 doc instanceof

    2.2K10

    架构和数据库

    .find({}).count() 查询所有结果的数量 修改集合中符合条件的文档 db..update({查询条件},{新对象},{配置}) 默认只修改一个 db.....updateOne({查询条件},{新对象}) 修改一个符合条件的文档 db..updateMany({查询条件},{新对象}) 同时修改多个符合条件的文档 db....库,对原生的模块进行了封装,提供了更多的功能 Mongoose 优势 官方地址:http://www.mongoosejs.net/ 可以为文档创建一个模式结构(Schema) 可以对模型中的对象/文档进行验证...Schema(模式对象) 定义约束了数据库中的文档结构 Model Model 对象作为集合中的所有文档表示 相当于 MongoDB数据库中的集合collection Document 表示集合中的具体文档...查询结果结果会通过回调函数返回,参数必选,不传没有返回值 通过 find() 查询的结果,返回的对象就是 Document,文档对象 Document 对象是 Model 的实例 doc instanceof

    2.4K10

    初试MongoDB学习之Mongoose的使用

    #Mongoose的优势 可以像操作对象一样操作数据库 可以为文档创建一个模式结构(Schema) 可以对模型中的文档/文档进行验证 数据可以通过类型转换为对象模型 可以使用中间件来应用业务逻辑挂钩 比...}) #mongoose基本使用 #mongoose的几个新的对象 在MongoDB中,多个Document可以组成Collection(以下简称集合),多个集合又可以组成数据库。...文档 —— 是MongoDB的核心概念,是键值对的一个有序集,在JavaScript里文档被表示成对象。同时它也是MongoDB中数据的基本单元,非常类似于关系型数据库管理系统中的行,但更具表现力。...集合 —— 由一组文档组成,如果将MongoDB中的一个文档比喻成关系型数据库中的一行,那么一个集合就相当于一张表。...mongoose中任何任何事物都是从Schema开始的。每一个Schema对应MongoDB中的一个集合(collection)。Schema中定义了集合中文档(document)的样式。

    7.5K20

    大数据技术之_22_MongoDB学习_MongoDB 的简介、下载、安装、启动、配置和关闭 + MongoDB 的基本操作 + Mongoose + 使用 java 对 MongoDB 增删改查

    $set 修改文档中的指定属性 $unset 删除文档中指定的属性 $inc 自增文档中指定的属性的值 $push $addToSet db.users.update({username: "..."}, {$set: {age: 10}});     // 替换旧的文档对象中某个属性的值(只替换符合条件的第一个文档对象) db.users.updateMany({username: "sunwukong...//在查询时,可以在第二个参数的位置来设置查询结果的--即投影 db.emp.find({}, {ename: 1, _id: 0, sal: 1});  第四章 Mongoose 4.1 Mongoose...比 Node 原生的 MongoDB 驱动更容易 4.3 新的对象 mongoose 中为我们提供了几个新的对象: Schema(模式对象)   • Schema 对象定义约束了数据库中的文档结构。...通过 Model 查询到结果都是 Document 对象或 Document 对象数组。

    20K30

    js基础(一)

    最小值:Number.MIN_VALUE,大于0的最小值。 NaN 是一个特殊的数字,表示Not A Number。 js中整数的运算基本可以保证精确。 如果使用js进行浮点数运算,可能不精确。...true = 1;false = 0;null = 0;NaN = NaN ) +: 可以对两个值进行加法运算,并将结果返回。 任何数与NaN相加,都是NaN。...+= -= *- /= %= 自增自减 自增:(++) 可以使变量在自身的基础上+1; 自增分为两种:后++(i ++),前++(++ i),无论是i++还是++i,都会立即使原变量值增加1。...&&:与; 可以对符号两侧的值进行与运算,并返回结果。 如果两个值都是true,返回true。只要有一个false,就返回false。 js中的与属于短路的与。...| |:或; 可以对符号两侧的值进行或运算,并返回结果。 只要有一个true,就返回true。 js中的与属于短路的或。第一个值是true,则不会检查第二个值。

    2.2K20

    JavaScript-算数运算符

    由于加法运算符存在重载,可能执行两种运算,使用的时候必须很小心。 ? 上面代码中,由于从左到右的运算次序,字符串的位置不同会导致不同的结果。...上面代码中,减法、除法和乘法运算符,都是将字符串自动转为数值,然后再运算。 2.4 对象的加法 (1)如果运算子是对象,必须先转成原始类型的值,然后再相加。...这些语言中的幂运算符有着比其他的单目运算符(如一元 + 或一元 - )更高的优先级。但是作为例外,在 Bash 中,** 运算符被设计为比单目运算符优先级更低。...(2)在最新的 JavaScript(ES2016) 中,禁止使用带歧义的幂运算表达式。比如,底数前不能紧跟一元运算符(+/-/~/!/delete/void/typeof) ? 7.3 示例 ?...(1)如果要反转求幂表达式结果的符号,你可以采用这样的方式: ? (2)强制求幂表达式的基数为负数: ? 八、自增 (++) 自增运算符为其操作数增加1,返回一个数值。

    1.4K40

    前端day08-JS学习笔记

    非xxxx类似于一种否定逻辑 1.3-运算符优先级 不需要刻意的去记,因为开发中很少会遇到多个运算符参与的式子,万一遇到也可以通过()来提升优先级 1.png 运算符优先级:确定不同运算符的运算规则 1...* 前自增表达式:先自身+1,后赋值(将num的值赋值给自增表达式的结果) * 后自增表达式:先赋值,后自身+1 3.gif 4.gif 02-数据类型补充 1.1-五种基本数据类型补充...1.NaN:not a number 不是一个数字 (1)NaN是number数据类型中一个特殊的数值,是数学计算错误得到的一个结果 例如: '张三' - 100,在数学上这是一种错误的计算,它的结果就是...NaN (2)NaN与任何数字都不等,包含它本身 (3)NaN与任何数字计算得到的都是NaN 2.isNaN(数据):检测一个数据是不是NaN 得到的结果是布尔类型 例如:isNaN(NaN),结果为true...number类型再运算,如果无法转换则为NaN 数学正号 : +num 当 +/-号写在一个变量名的前面,此时表示数学的正/负数 自增自减(++ --) 算术运算符(+ - * / %) 比较运算符(>

    1.1K10

    JavaScript基础

    常量 语法:const PI=3.14; 常量值是只读的,不能修改 和let的作用域是一样的 数据类型 undefined 表示:变量声明了,但是没有初始化 var x;//声明但是没有初始化 console.log...它会把参数转换为数值,如果得到的结果是NaN、Infinity或-Infinity,函数返回false(假),其他情况返回true(真)。...false转成数值是0,累加就是1 var d = 2.3; d++; //3.3,直接加1 执行顺序 ++i:先自增再运算 i=i+1 其他 i++;先运算再自增 其他运算 i=i+1 算术运算符...,则将另一个操作数转换为数值,然后进行数值比较 如果一个操作数是一个布尔值,则先将其转换为数值,然后再执行比较 逻辑运算符 &&(并且) 两边不全是boolean类型 第一个表达式转换为false,最终的结果为第一个操作数...第一个表达式转换为true,最终的结果为第二个操作数 || (或者) 两边不全是boolean类型 第一个表达式转换为false,最终的结果为第二个操作数 第一个表达式转换为true,最终的结果为第一个操作数

    1.1K20
    领券