随记
来源:互联网 发布:加工中心编程软件app 编辑:程序博客网 时间:2024/06/12 16:16
有这样一段代码:
<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语句使用,所以代码会继续运行
代码虽小,境界无穷。
0 0
- 随记
- 随记
- 随记
- 随记
- 随记
- 随记
- 随记
- 随记
- 随记
- 随记
- 随记
- 随记
- 随记
- 随记
- 随记
- 随记
- 随记
- 随记
- Oracle442个应用场景------------基础应用场景
- Android-循环广告位组件
- Android-风格和主题
- exponential complexity DEMO
- LeetCode OJ 之 Majority Element II(大部分元素2)
- 随记
- 7.2(stm32以太网)
- java第一个类的测试小例子
- LA 2995 & ZOJ2714 Image is Everything
- 三期_day04_Dao层的准备工作_I
- 谨慎使用A2W等字符转换宏
- 数字信号处理公式变程序(五)——仿matlab的spectrogram函数(STFT)
- 在树莓派、香蕉派上安装ROS JADE (Arch Linux)
- NSCache使用常见错误