我試圖解釋作爲輸入給出的公式:通行證的數據作爲代碼
y= y argv[1][s] 5;
其中argv[1][s]
可以+ - *
例如。
y = y + 5;
y = y * 5;
我可以使用檢查特定的值,但它更有趣,找出爲什麼這不起作用。
錯誤C2146:語法錯誤:丟失 ';'標識符「的argv」
之前,我認爲發生的事情是+
作爲'+'
所以不會產生任何結果通過。有沒有辦法引用它?
我試圖解釋作爲輸入給出的公式:通行證的數據作爲代碼
y= y argv[1][s] 5;
其中argv[1][s]
可以+ - *
例如。
y = y + 5;
y = y * 5;
我可以使用檢查特定的值,但它更有趣,找出爲什麼這不起作用。
錯誤C2146:語法錯誤:丟失 ';'標識符「的argv」
之前,我認爲發生的事情是+
作爲'+'
所以不會產生任何結果通過。有沒有辦法引用它?
不,因爲這不是C++的工作原理。您的代碼在編譯時必須有意義,以便編譯器可以將其轉換爲一組固定的彙編指令。運行時文本不被「替換」;在某些解釋性語言中沒有「eval」的等價物。
如果你想做到這一點,你需要做的是這樣:
switch (argv[1][s])
{
case '+':
y = y + 5;
break;
case '-':
y = y - 5;
break;
case '*':
y = y * 5;
break;
default:
std::cerr << "Unrecognised operator: \"" << argv[1][s] << "\"" << std::endl;
break;
}
+1:但可能正確的單詞不是「已編譯」(Common Lisp已編譯但具有eval;文本並不是將代碼作爲數據處理的唯一可能方式 - 請參閱Lisp宏)。 – 6502 2011-02-23 11:38:56
這就是我的支票。不加引號不一定是字面的。也許還有其他方法可以做到這一點。如果處理器可以執行該命令,爲什麼它必須在程序中指定,而不是輸入的一部分? – user490735 2011-02-23 11:39:53
@ 6502:你對「編譯」是正確的。你能想出一個更好的術語嗎? – 2011-02-23 11:40:52
您可以加入一些示例代碼,以澄清問題? – 2011-02-23 11:25:59
你一定要抓住一個初學C++的教科書! – Danvil 2011-02-23 11:49:25