c语言前置 和后置 是啥运算符,Java基础篇(二):前置与后置运算符

本文介绍了前置与后置运算符如++在C/C++和Java中的不同之处,主要在于返回值和左值性质。在C/C++中,x++返回一个值,不能再次进行写操作,而++x返回的是变量x本身,可以继续操作。在Java中,无论前置还是后置运算符返回的都是值,都不能作为左值进行写操作。
摘要由CSDN通过智能技术生成

前置与后置运算符是非常常用的运算符,但它们有什么区别?这里以++为例子,看下面的代码:

public class Test

{

public static void main(String[] args)

{

int x = 0;

x ++;

++ x;

}

}

在这段代码中,x++与++x的效果是一样的。再看下面的代码:

public class Test

{

public static void main(String[] args)

{

int x = 0;

int y = x++;

int z = ++x;

System.out.println(x);

System.out.println(y);

System.out.println(z);

}

}

输出结果是

2

0

2

来分析一下代码,x++与++x语句的结果都是将x的值加1,而它们的区别就是它们的返回值不一样,x++返回的值是x原来的值(加1之前的值),所以y的值为0,此时x的值为1,++x返回的值是加1之后的值,因此z的值为2,x的值也是2。

C/C++中的前置与后置运算符##

C/C++中的前置与后置运算符对操作数进行运算的结果与Java中是一样的,但有一点不一样,还是它们的返回值不一样,有些同学可能要问,返回值跟Java中是一样的啊,哪里不一样了,看看下面的代码你就明白了:

#include

using namespace std;

int main()

{

int x = 0;

(x++) ++; // 这句编译错误,提示:error: non-lvalue in increment

(++x) ++;

cout << x << endl;

}

看明白了吗?重点就在于(x++) ++与(++x) ++,前者会编译错误,提示非左值不能进行自增操作,而后者可以正常编译。也就是说,在C/C++,x++返回的仅仅是一个值而已,不能对其进行写操作,而++x返回的是x本身这个变量,可以对其进行写操作。

而在Java中,如下:

public class Test

{

public static void main(String[] args)

{

int x = 0;

(x++) ++; // 编译错误

(++x) ++; // 编译错误

}

}

两者都会编译错误,说明在Java中,不管是前置还是后置运算符返回的都是值,不能作为左值进行写操作。

左值

左值(lvalue) 是B语言/C语言/C++语言等类C语言中的一类表达式。“左”(left)的原意是指可以放在赋值符号“=”的左边,但其实也表示能作为&和++等操作符的操作数(B语言中已经如此)。而且,现代C/C++中的含义已经不局限于此。lvalue的l被重新解释为location。这也对应于ISO C11/ISO C++11的内存位置(memory location)。(引自左值-百度百科)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值