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}; // 返回包含单个值的向量 }