From 74f325c6fd01cd67fb9d9e102e7fa3b3afb859f0 Mon Sep 17 00:00:00 2001 From: mxr <> Date: Thu, 26 Mar 2026 15:29:50 +0800 Subject: [PATCH] =?UTF-8?q?feat(sem)=E5=B8=B8=E9=87=8F=E6=B5=AE=E7=82=B9?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E9=9A=90=E5=BC=8F=E8=BD=AC=E6=8D=A2=E4=B8=BA?= =?UTF-8?q?=E6=95=B4=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/sem/SymbolTable.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/sem/SymbolTable.cpp b/src/sem/SymbolTable.cpp index f1a6a87..f9f421a 100644 --- a/src/sem/SymbolTable.cpp +++ b/src/sem/SymbolTable.cpp @@ -620,11 +620,16 @@ std::vector SymbolTable::EvaluateConstInitVal( if (base_type->IsInt32() && val.kind == ConstValue::FLOAT) { throw std::runtime_error("整型常量不能使用浮点常量初始化"); } + */ + // 隐式类型转换 + if (base_type->IsInt32() && val.kind == ConstValue::FLOAT) { + val.kind = ConstValue::INT; + val.float_val = static_cast(val.int_val); + } if (base_type->IsFloat() && val.kind == ConstValue::INT) { val.kind = ConstValue::FLOAT; val.float_val = static_cast(val.int_val); } - */ return {val}; // 返回包含单个值的向量 }