Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果不使用Rust中的变量,则无法打印i64类型的绝对值_Rust - Fatal编程技术网

如果不使用Rust中的变量,则无法打印i64类型的绝对值

如果不使用Rust中的变量,则无法打印i64类型的绝对值,rust,Rust,我想实现名为abs的方法。当我使用变量杠杆let时,一切正常: fn main() { let x = -5i64; println!("x == {}", x.abs()); } 它产生正确的输出: x == 5 但当我想在没有任何let语句的情况下实现此功能时: fn main() { println!("x's abs == {}", -5i64.abs()); } 我得到以下输出:: x's abs == -5 预

我想实现名为abs的方法。当我使用变量杠杆let时,一切正常:

fn main() {
    let x = -5i64;

    println!("x == {}", x.abs());
}
它产生正确的输出:

x == 5
但当我想在没有任何let语句的情况下实现此功能时:

fn main() {
    println!("x's abs == {}", -5i64.abs());
}
我得到以下输出::

x's abs == -5
预期产出:

x's abs == 5
这背后的逻辑是什么?如何在不使用变量的情况下实现文本的绝对值

使现代化 我将完整的文本放在大括号内,然后指定abs调用的类型:

它起作用了


但我仍然不明白为什么直截了当地提到:-5i64不起作用。

这是因为方法调用的值高于-。
-5i64.abs解析为取绝对值5,然后求反。

这是因为方法调用的值大于-。
-5i64.abs解析为取绝对值5,然后取其反。

尝试在-5i64周围使用括号,如`-5i64.absTry,在-5i64周围使用括号,如`-5i64.abs
fn main() {
    println!("x's abs == {}", (-5i64).abs());
}