首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ Builder 編譯錯誤「Statement missing」:2s 應為 2 * s 乘法運算符缺失

     編輯:程式設計綜合問答

C++ Builder 報錯 Statement missing,代碼中出現 2s,編譯器將其識別為單一標識符而非「2 乘以 s」。C++ 中數字字面量與變量相乘必須顯式寫乘號 *,不支援數學習慣的隱式乘法。

錯誤代碼

int result = 2s + 3t; // 編譯器視為標識符 "2s" 和 "3t" → Statement missing

正確代碼

int result = 2 * s + 3 * t; // 顯式乘法運算符

擴展:C++14 用戶定義字面量(UDL)可實現類似語法

// 定義字面量後綴
constexpr long double operator"" _m(long double v) { return v; } // 米
constexpr long double operator"" _km(long double v) { return v * 1000; } // 公里

// 使用
auto dist = 2.5_km + 300_m; // 合法:2.5_km 是調用 operator"" _km(2.5)

但這需要預先定義後綴運算符,且後綴必須以下劃線開頭(_xxx),標準庫 std::chrono 已定義 h、min、s、ms、us、ns 等時間字面量。若代碼包含 using namespace std::chrono_literals;,則 2s 合法表示 2 秒(std::chrono::seconds),但這屬於特定領域庫功能,非通用算術語法。

結論:通用 C++ 代碼中乘法必須寫 *,2s 只有在引入 chrono_literals 且意圖表示時間間隔時才合法,否則為語法錯誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved