rust-quiz:024-local-and-const-hygiene.rs

题目

fn main() {
    let x: u8 = 1;
    const K: u8 = 2;

    macro_rules! m {
        () => {
            print!("{}{}", x, K);
        };
    }

    {
        let x: u8 = 3;
        const K: u8 = 4;

        m!();
    }
}

关键

  • 卫生
    看过macro_rules的都知道卫生性。
    这里简单的描述一下宏内部对于变量引用的特质
    • 变量:选择声明时候最近的值进行固化
    • 常量:不进行固化

题解

根据上述性质,对于x会选取1进行固化。
而针对K,并不会进行固化,也就是只会选取最近的4作为内部值。
因此打印的是14

答案

14

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!