此代码显示char
占用4个字节:
println!("char : {}", std::mem::size_of::<char>());
char
在https://play.rust-lang.org/我也得到4个字节
答案 0 :(得分:10)
首先:Rust中的char
是表示Unicode标量值的唯一整数值。例如,考虑(又名桩的Poo,又名U + 1F4A9),在Rust中,它将由char
表示,其值为128169
十进制(即{{ 1}}十六进制):
0x1F4A9
如上所述,Rust fn main() {
let c: char = "".chars().next().unwrap();
println!(" is {} ({})", c, c as u32);
}
是4个字节,因为4个字节是2个字节的最小幂,它可以保存任何Unicode标量值的整数值。该决定是由域驱动的,而不是由架构约束驱动的。
注意:对标量值的强调是许多&#34;字符&#34;我们看到它们实际上是由Unicode中的多个组合字符组成的字形,在这种情况下需要多个char
。
答案 1 :(得分:3)
$('#div1').removeClass();
$('#div1').addClass(happy);
是四个字节。 总是四个字节,它总是 四个字节。它是四个字节,剩下四个字节。
它没有什么特别之处;四个字节只是两个中最小的幂,您可以在其中存储任何Unicode标量值。其他各种语言都做同样的事情。
答案 2 :(得分:2)
字符是四个字节,不依赖于体系结构。
为什么呢?根据UTF-8维基百科的文章。
前128个字符(US-ASCII)需要一个字节。接下来的1,920 字符需要两个字节来编码。需要三个字节 基本多语言平面的其余部分中包含的字符 几乎所有常用字符。需要四个字节 Unicode的其他平面中的字符。
因此,如果您想表示任何可能的 Unicode字符,编译器必须保存4个字节。
您还应该考虑字节对齐:http://www.eventhelix.com/realtimemantra/ByteAlignmentAndOrdering.htm