Function 铁锈中的绝对值函数
在此程序中,函数计算整数的绝对值,main()有助于用结果完成语句:Function 铁锈中的绝对值函数,function,macros,rust,absolute-value,Function,Macros,Rust,Absolute Value,在此程序中,函数计算整数的绝对值,main()有助于用结果完成语句: fn main() { let value = abs(-4); println!("{}.", value); } fn abs(x: i32) -> i32 { print!("The abs value of {} is ", x); if x > 0 { return x; } else { -x } } 有没有办法将整个
fn main() {
let value = abs(-4);
println!("{}.", value);
}
fn abs(x: i32) -> i32 {
print!("The abs value of {} is ", x);
if x > 0 {
return x;
} else {
-x
}
}
有没有办法将整个语句“的abs值为…”正确打印到abs()函数中?我试过了,但没有成功
println!("The abs value of {} is {} ", x, x);
这总是打印x参数的值(例如-4,-4),因此它是不正确的
和
println!("The abs value of {} is {} ", x, abs(x));
但在这里,由于某种原因,Rust不喜欢递归,在编译时发出警告,然后不运行程序。尝试避免递归:
fn main() {
let value = abs(-4);
println!("{}.", value);
}
fn abs(x: i32) -> i32 {
let y = if x >= 0 { x } else { -x };
println!("The abs value of {} is {} ", x, y);
y
}
输出:
The abs value of -4 is 4
4.
基本类型有内置的
.abs()
方法,例如。
,
,
,
,
,
,
以及:
溢出行为
i32::min_value()
的绝对值不能表示为
i32
,尝试计算它将导致溢出。这
意味着调试模式下的代码将在这种情况下触发死机,并且
优化后的代码将返回i32::min_value()
,不会出现死机
以下代码将在模式下死机(并在模式下返回-128
):
由于
abs(-2_147_483_648_i32)
是2_147_483_648_u32
,您可以返回u32
,而不是i32
:
fn abs(x: i32) -> u32 {
if x >= 0 {
x as u32
} else if x == std::i32::MIN {
2_147_483_648_u32
} else {
-x as u32
}
}
fn main() {
let value = abs(std::i32::MIN); // i32::min_value() // -2_147_483_648i32
println!("{}.", value); // 2147483648
}
:
绝对值法为;您不需要自己实现它
fn main() {
let value = abs(-4);
println!("{}.", value);
}
fn abs(x: i32) -> i32 {
let val = x.abs();
println!("The abs value of {} is {}", x, val);
val
}
谢谢,效果很好。此时,我可以简单地从main调用abs(-4),并删除main中的“let value=”和整个“println!”语句。是:
fn main(){abs(-4);}
fn abs(x: i32) -> u32 {
if x >= 0 {
x as u32
} else if x == std::i32::MIN {
2_147_483_648_u32
} else {
-x as u32
}
}
fn main() {
let value = abs(std::i32::MIN); // i32::min_value() // -2_147_483_648i32
println!("{}.", value); // 2147483648
}
2147483648
fn main() {
let value = abs(-4);
println!("{}.", value);
}
fn abs(x: i32) -> i32 {
let val = x.abs();
println!("The abs value of {} is {}", x, val);
val
}