[单选题]已知程序中有以下声明:intnonconst_var=100;constintconst_var1=2;constintconst_var2=nonconst_var;则下述代码中正确的是:

A
A.constexpr int constexpr_var1 = 3 + const_var1 * 4;
B
B.constexpr int constexpr_var2 = 3 + nonconst_var * 4;
C
C.constexpr int constexpr_var3 = 3 + const_var2 * 4;
正确答案:A
题目解析
constexpr的变量的值必须是编译器在编译的时候就可以确定的。上例中因为nonconst_var的值在语法上来讲,运行期间可能被更改,所以编译期间无法确定,不属于常数表达式。因为const_var2是由非常数表达式来初始化的,所以const_var2也不是常数表达式。但const_var2本身的声明,定义及初始化是合法的。constexpr比const更严格,用来初始化constexpr_var2和constexpr_var3的也都不是常数表达式,所以他们的定义都是错误的。
扫描二维码
免费搜题、免费刷题、免费查看解析