Java 自增(++) 和 C语言中自增的区别
在Java、c语言等高级语言中自增和自减的作用基本一致,都是变量自身加一或减一。下面我只对自增进行说明,自减是类似的。
自增运算符(++),有两种书写形式,一个是在变量前: ++ num;
另一种在变量后 num++;他们的作用是一样的,但是优先级有很大的差别。
注:优先级代表该运算符执行的顺序,优先级越高越先执行。百度百科优先级表如下:

代码演示:
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 0;
b = a++;//等价于 b=a; a++;
System.out.println("a=" + a + ",b=" + b);
System.out.println("=====华丽的分割线=====");
a = 1;//重新赋值为1
b = 0;//重新赋值为0
b = ++a;//等价于 a++;b = a;
System.out.println("a=" + a + ",b=" + b);
}
}
输出结果:
a=2,b=1
=====华丽的分割线=====
a=2,b=2
前加加优先级高先运算,后加加优先级低后运算;在c语言中这里的运算方式也是相同的。
===========================================================
差异:
Java代码:
public class Test {
public static void main(String[] args) {
int a = 1;
a = a++;
System.out.println(a);//输出结果为1
}
}
C语言代码:
#include<stdio.h>
void main() {
int a = 1;
a = a++;
printf("%d",a);//输出结果为2
}
===============================================================
结论:
在Java中我们可样解释,后加加运算a先自身加一,然后再将没有运算的值赋给a,最终结果a==1。
在c语言中是按照优先级来运算的,后加加优先级低,a先赋值给a自身,然后a再加加,最终结果a==2;
Java 自增(++) 和 C语言中自增的区别的更多相关文章
- C、C++、C#、Java、php、python语言的内在特性及区别
C.C++.C#.Java.PHP.Python语言的内在特性及区别: C语言,它既有高级语言的特点,又具有汇编语言的特点,它是结构式语言.C语言应用指针:可以直接进行靠近硬件的操作,但是C的指针操作 ...
- js课程 3-10 js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么
js课程 3-10 js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么 一.总结 一句话总结:js中是对象点方法的形式,这些方法都是对象的方法,而在php.java中却不是这样. 1.j ...
- [转]c 语言中 %d,%lu等区别
转载至:http://blog.sina.com.cn/s/blog_7d94c35c01019f96.html %d 有符号10进制整数 %ld 长整型 %hd短整型 %hu 无符号短整形 %u无符 ...
- c语言中 -> 的用法
->是一个整体,它是用于指向结构体. 1.换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到"->&quo ...
- JAVA语言中的修饰符
JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...
- Java语言中的面向对象特性总结
Java语言中的面向对象特性 (总结得不错) [课前思考] 1. 什么是对象?什么是类?什么是包?什么是接口?什么是内部类? 2. 面向对象编程的特性有哪三个?它们各自又有哪些特性? 3. 你知 ...
- Java C# C语言中的占位符
一般拼接一段字符串在编程中是很常见的事,下面简单做个总结: 什么是占位符?占位符就是先占住一个固定的位置,等着你再往里面添加内容的符号. 1.Java中处理方法: package com.amos; ...
- JAVA语言中冒号的用法
近来由于本人要介入android平台的开发,所以就买了本JAVA语言的书学习.学习一段时间来,我的感觉是谭浩强就是厉害,编写的<C编程语言>系列丛书不愧是经典.书中对C语言的介绍既系统又全 ...
- Java语言中的面向对象特性:封装、继承、多态,面向对象的基本思想(总结得不错)
Java语言中的面向对象特性(总结得不错) [课前思考] 1. 什么是对象?什么是类?什么是包?什么是接口?什么是内部类? 2. 面向对象编程的特性有哪三个?它们各自又有哪些特性? 3. 你知道jav ...
随机推荐
- JDBC获取数据库Connection的工具抽取
使用JDBC获取数据库的连接,大字分为三个步骤 1.获取驱动包名,定义URL,database_username,database_password 2.获取Connection对象 3.利用Conn ...
- string,char*,int 之间的转化
c++中经常遇到string,char*,int之间的相互转化,今天就来整理一下. 以下是转载并修改的内容: 以下是常用的几种类型互相之间的转换 string 转 int先转换为char*,再使用at ...
- DB Error || Warning
数据库在进行增删改查时有时候会发生错误,当在程序中一个操作总是不起作用的时候,我们可以尝试如下方法: 1.输出sql语句,有的sql语句可能是通过一些字符拼接完成的,这时候可能会发生'', +之类的混 ...
- 服务端性能测试 TPS
针对服务器端的性能,以TPS为主来衡量系统的性能,并发用户数为辅来衡量系统的性能,如果必须要用并发用户数来衡量的话,需要一个前提,那就是交易在多长时间内完成,因为在系统负载不高的情况下,将思考时间( ...
- 简单易学的SSM(Spring+SpringMVC+MyBatis)整合
SSM(Spring+SpringMVC+MyBatis)的整合: 具体执行过程:1.用户在页面向后台发送一个请求 2.请求由DispatcherServlet 前端控制器拦截交给SpringMVC管 ...
- TFLearn构建神经网络
TFLearn构建神经网络 Building the network TFLearn lets you build the network by defining the layers. Input ...
- 转载 java基础题(面试必知)
1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包 ...
- (一)Builder(建造者)模式
我们一般在构建javabean的对象的时候通常有三种写法: 1.直接通过构造函数传参的方式设置属性,这种方法如果属性过多的话会让构造函数十分臃肿,而且不能灵活的选择只设置某些参数. 2.采用重叠构造区 ...
- UCOSii项目在NIOSii上的移植
概览 本次使用Altera公司的NIOS II软核. 使用Quatus工具生成BSP并利用BSP打包工具生成UCOSII嵌入环境. 手动书写LCD驱动与显示函数,对UCOS II加入简单图像显示接口. ...
- JUnit之TestCase和TestSuite详解
首先介绍下TestCase以及TestSuite. TestCase:字面意思,测试用例.为一个或多个方法提供测试方法.一般是一个test TestSuite:测试集合,即一组测试.一个t ...