关于C/C++和Java中的j=j++问题

博客探讨了Java和C/C++中j=j++语句的行为差异,通过反编译和解释运行机制,揭示了Java中由于变量存储区的原因导致j=j++结果为0。同时提到了不同编译器可能产生的不同结果,引发对编译器处理此类表达式方式的思考。最后鼓励读者深入理解计算机内部运行机制。
摘要由CSDN通过智能技术生成

” j = j++ “

(博客搬家,原 MyBlog

初识问题

前段时间,一朋友说起一个有趣的程序,关于Java中的j=j++问题

public class Test{
    public static void main(String [] args){
        int j=0;
        for(int i=0;i<100;i++){
            j=j++;
        }
        System.out.println(j);
    }
}

按照我们习惯的思维,j=j++表明j先自增,然后再赋值给“=”左边的变量j,然后再for循环100次,那么值应该为100

但是,在Java环境中运行出来为 0

问题扩展

首先我们第一步想的,会不会是我们自己的程序编写错误了呢,

额,好吧,程序代码并没有什么语法等错误,那么问题出现在哪里呢?

接下来我们就更换到C/C++频道来试试,我们就以C语言为例讲解

#include "stdio.h"
void main()
{
    int j=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值