|
![]() |
#1 |
Участник
|
Цитата:
Сообщение от gl00mie
![]() Более того, передаваться исходно могут вообще данные не того типа, какой вы ожидаете. Например:
X++: void foo(InventQty _qty) { // ... } void bar() { this.foo( 0 ); // здесь передается аргумент типа int, а не real! какие уж там тонкие отличия EDT... } В момент вызова функции foo() происходит преобразование из int в real и в параметре _qty хранится число в формате плавающей точки По ссылке, на мой взгляд, показан пример некорректного приведения типов int64->boolean (точнее int64->Enum. Хотя, для boolean выполняется дополнительное преобразование). Причем, при возврате из функции значения целочисленного типа, в том числе и литерала, приведение идет не к типу Boolean (Enum с Id=0xF000), а к некоему промежуточному енуму с Id = 0x0000 значения которого находятся в диапазоне 0..255. X++: Int i; boolean test() { return 0x10000000; } ; i = test(); info( strfmt('%1', i) );
__________________
Axapta v.3.0 sp5 kr2 |
|