在https://doc.rust-lang.org/book/primitive-types.html#numeric-types中,它说在
设x = 42; // x的类型为i32
这意味着默认x类型i32.
但在http://rustbyexample.com/cast/literals.html中,它说明了这一点
未填充的文字,它们的类型取决于它们的使用方式
我知道我不能使用i32索引向量,但以下代码有效:
fn main() {
let v = vec![1, 2, 3, 4, 5];
let j = 1; // j has default type i32? or it has type when it is first used?
// And what is the type of 1?
println!("{}", v[1]); // is 1 a usize?
println!("{}", v[j]);
}
Run Code Online (Sandbox Code Playgroud)
那么,字面积分值的类型是什么?
从语言参考:
未填充的整数文字的类型由类型推断确定:
如果可以从周围的程序上下文唯一确定整数类型,则非整数整数文字具有该类型.
如果程序上下文约束类型,则默认为带符号的32位整数
i32.如果程序上下文过度约束类型,则将其视为静态类型错误.
在线上
Run Code Online (Sandbox Code Playgroud)println!("{}", v[1]); // is 1 a usize?
周围的程序上下文要求1是一个usize(因为这是[]操作员需要的),所以是的,这里1将有类型usize.
| 归档时间: |
|
| 查看次数: |
317 次 |
| 最近记录: |