作者:
m8403051 (大吉嶺紅茶)
2020-04-20 09:37:40開發平台(Platform): Linux CentOS 7
編譯器: gcc version 4.4.7 20120313 (Red Hat 4.4.7-23)
預期的正確結果(Expected Output):180
錯誤結果(Wrong Output):215
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
https://ideone.com/e.js/nn576o
#include <iostream>
using namespace std;
int main() {
int a=6, b=7;
a *= a
作者: jerryh001 2020-04-20 09:41:00
同一行不能修改a兩次以上 會UB
作者:
m8403051 (大吉嶺紅茶)
2020-04-20 11:53:00所以這樣的寫法是不好的寫法嗎?另外, g++ 有可能修改設定修正嗎?
作者:
m8403051 (大吉嶺紅茶)
2020-04-20 12:19:00了解了, 搜索到一些 undefined behavior 的資訊, 謝謝
作者:
mmmmei (mmm煤)
2020-04-20 12:57:00十三戒第八條
都2020了還有人在出這種題目 魚骨題真是禍害遺千年
xD想說怎麼會是 UB, 還沒看到解答語言也是會演進的, 所以答案也不會一成不變
作者:
oToToT (å±å©)
2020-04-20 20:56:00在C++17下這樣還是UB嗎
原PO提的編譯器是gcc4.4.7 所以應該用c++0x的標準(逃)
a*=和a--之間並没有sequence point隔開,所以計算順序没有規定