[问题] cpp 考题请教

楼主: 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++ 有可能修改设定修正吗?
作者: james732 (好人超)   2020-04-20 12:02:00
实务上遇到有人这么写我会揍他 XD
楼主: m8403051 (大吉岭红茶)   2020-04-20 12:19:00
了解了, 搜索到一些 undefined behavior 的资讯, 谢谢
作者: mmmmei (mmm煤)   2020-04-20 12:57:00
十三戒第八条
作者: sarafciel (Cattuz)   2020-04-20 14:53:00
都2020了还有人在出这种题目 鱼骨题真是祸害遗千年
作者: kobe8112 (小B)   2020-04-20 16:48:00
工作这样写不会被干飞吗QQ
作者: ucrxzero (RX-0)   2020-04-20 19:08:00
要看编译器怎么写int乘法
作者: loveme00835 (发箍)   2020-04-20 19:51:00
xD想说怎么会是 UB, 还没看到解答语言也是会演进的, 所以答案也不会一成不变
作者: oToToT (屁孩)   2020-04-20 20:56:00
在C++17下这样还是UB吗
作者: sarafciel (Cattuz)   2020-04-20 21:23:00
原PO提的编译器是gcc4.4.7 所以应该用c++0x的标准(逃)
作者: freef1y3 ( )   2020-04-22 12:45:00
a*=和a--之间并没有sequence point隔开,所以计算顺序没有规定

Links booklink

Contact Us: admin [ a t ] ucptt.com