我很困惑为什么两个相同的表达式给出不同的结果?唯一的区别只是在表达式()中我使用自定义原始包装类型。
为了清晰起见,我提供了代码: struct Int { int值;
beforeEach(module(function($provide) {
$provide.service('mockService', mockService); // where mockService is a constructor function
}));
Clang编译器也会显示一个警告--Wunsequenced,但仅适用于具有基本类型的表达式。
答案 0 :(得分:2)
for (A p: aList) {
p.methodFromA();
if (p instanceof B) {
B q = (B) p;
q.methodOnlyBHas();
// or
((B)p).methodOnlyBHas();
}
}
之类的所有表达式都有未定义的行为,因为变量是在没有sequence point的情况下读取和写入的。