随记

原创 2015年07月09日 08:26:57

有这样一段代码:

<pre name="code" class="java">int a = 2;
int b = 3;
if(a++ = b++){
a++;
b++;
}
system.print.out(a);
system.print.out(a);

输出是什么?

看到if中的条件的时候,瞬间蒙掉了,b++到底是赋值给了a?还是a++?

根据优先级,是赋值给了a所寄存的那个临时变量,即:a(临时变量) = 3;那a++就变成了a(旧值)+1=2+1=3

至于b,就不用说了,so,这段代码的输出是:3 4

OK,我们接着看一段代码:

int a = 2;
int b = 3;
if(a = b++){
a++;
b++;
}
system.print.out(a);
system.print.out(a);

这个简单啊,简化了上边最让我们头疼的a++赋值,那到底能不能运行呢?if里应该是逻辑值啊,这是个int,怎么办,强转吧:

if((boolean)a = b++)

这样不就OK了。

很不幸,上边的所有论述都是在扯蛋!

理由有两个:

1,赋值语句明确规定:赋值语句的左边必须是变量,不能是表达式,所以上述代码根本无法编译

2,关于if语句中的条件语句:由于Java是强类型语言,不能将int转化为boolean,其实java虚拟机内部boolean类型就是int类型,不过java编译器不允许boolean类型直接转换成int类型。但是由于PHP是弱类型语言,会将非0的变量或常量转为true以供if语句使用,所以代码会继续运行


代码虽小,境界无穷。



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java.util随记.doc

  • 2008-08-07 16:36
  • 86KB
  • 下载

随记8——AndroidAS多渠道打包

多渠道打包,顾名思义,就是打多个渠道的apk包。而多渠道打包也有很多种方法,下面我就说一下我写的其中的一种,我感觉挺好用的。

oracle安装随记.doc

  • 2011-11-17 11:40
  • 954KB
  • 下载

linux net 管理随记

  • 2012-09-12 01:10
  • 1.84MB
  • 下载

gitHub托管随记

GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub。 这里只是进行代码的提交和托管,在这之前需要申请一个GitHub账号。和生...

Python随记

  • 2015-11-10 23:06
  • 31KB
  • 下载

c#公司开发时随记

  • 2008-06-26 08:49
  • 156KB
  • 下载

随记1.0

2013年9月8号,         我踏进了我人生的又一个转折点,带着喜悦,忐忑不安,错综复杂的心情,开始了我的大学生活。 来到一个陌生的城市,没有想象的那么美好,以前很想一个人去流浪,以为没有...

git随记 git

  • 2014-10-14 11:37
  • 114KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)