> Дурачок, это два разных кода.Умничка моя, эти "коды" соответствуют _твоему_ же сравнению "Даже си компилятор при преобразовании из float в char выдает предупреждение" с новостным "операция преобразования 'as' выполняет проверку на переполнение и ...". Конечно же это будут два разных кода :)
> Аналог твоего сишного кода на расте выглядит так:
> fn main() {
> let x:u8 = 1.04E+17 as u8;
> println!("Hello, world! {}",x);
> }
"Спец" ты мой анонимный -- это вот как раз и есть _явное преобразование_ "операцией 'as'".
Как в примере новости. Для того и был приведен аналог того ржавого кода (возможно тебя сбила с толку другая циферка? Так я не гордый, возьму ту из новости):
% cat hello2.c && gcc -Wall -Wextra hello2.c && ./a.out
#include <stdio.h>
int main(void) {
char x = (char)300.0;
printf("%x",x);
return 0;
}
7f%
% clang -Wall -Wextra hello2.c && ./a.out
28%
Причем, результат в каждом компиляторе "свой", потому что тут это изначально UD.
> If the value of the integral part cannot be represented by the integer type, the behavior is undefined.
такие дела.
>>> Хахахахахаха, вот умора! Даже си компилятор при преобразовании из float в char выдает предупреждение
> Аналог твоего растоманского кода на си:
#include <stdio.h>
int main(void) {
char x = 1.04E+17; <--- неявное преобразование
> И он выводит:
> <source>:3:18: warning: implicit conversion of out of range value from 'double' to
> 'char' is undefined [-Wliteral-conversion]
>>> Даже си компилятор при преобразовании из float в char выдает предупреждение
Кажется, до тебя начинает доходить :).
Теперь-то сможешь объяснить, зачем сравнивал попу-палец^W неявные преобразования в си с явными преобразованиями в ржавчине?