
1 thevita 2021-12-03 15:20:11 +08:00 啥 c++ 天王老子来了也是 21 |
2 power100 2021-12-03 15:33:39 +08:00 vc2022 的结果是 24 ,跟编译器有关,有兴趣可以看下汇编,日常代码一般也不会这么写。 |
3 yuzo555 2021-12-03 15:37:17 +08:00 梦回大一 |
4 geekfxxk 2021-12-03 15:40:41 +08:00 这个要问谭浩强 |
5 gaodq 2021-12-03 15:46:23 +08:00 c++标准未定义的行为 |
6 constexpr 2021-12-03 15:51:05 +08:00 g++给出 warning: operation on 'x' may be undefined c/c++中, 在同一个表达式中即访问又改变变量是未定义行为. 而 java 的好像是标准有定义的. |
7 yinanc   2021-12-03 15:53:06 +08:00 梦回谭浩强 |
8 constexpr 2021-12-03 15:53:59 +08:00 @constexpr 补充一下, g++给出结果是 22, clang 给出结果是 21,另外 clang 给出 warning: multiple unsequenced modifications to 'x' . |
9 mxT52CRuqR6o5 2021-12-03 15:55:55 +08:00 https://www.zhihu.com/question/23180989 undefined behavior +1 |
10 shintendo 2021-12-03 15:56:01 +08:00 标准未定义行为。未定义的意思就是编译器怎么结算都对,没有标准答案,不用在这种问题浪费时间,不要这样写代码,如果这是考试题那祝你好运。 |
11 deplivesb 2021-12-03 15:57:39 +08:00 这种 ub 有啥意思 |
12 icyalala 2021-12-03 15:58:47 +08:00 这种日经贴... 如果不管 UB 非要看结果的话, godbolt 上 MSVC 是 24, Clang 和 ICC 是 21, GCC 是 22 |
13 raycool 2021-12-03 16:33:44 +08:00 纠结这个没意义 梦回谭浩强 |
14 mxT52CRuqR6o5 2021-12-03 16:38:58 +08:00 js 把好多 C 语言中的 ub 给规定出标准来得到确定的行为,估计是方便用户优化(不去规范 ub 可能会导致不同的 js jit 引擎使用不同的方案优化) |
15 Jooooooooo 2021-12-03 16:40:39 +08:00 不要学这个, 讲这种东西的书也不要再学了. 时间花在更好的地方. 就算这是一个合法的行为, 你代码也不应该这么写. 这种题目, 让人得知原来代码还能这么写, 害人不浅. |
16 ayase252 2021-12-03 16:48:25 +08:00 via iPhone 建议标准规定这样写的语义是格式化硬盘 |
17 xz410236056 2021-12-03 17:09:13 +08:00 不同编译器 不同 C++有可能不一样,你别在这整谭浩强 那种不符合规范的代码,毫无意义 |
18 joshu 2021-12-03 17:10:15 +08:00 未指明的行为( unspecified behavior )程序的行为随实现而变动,且遵从标准的实现不需要为每个行为的效果提供文档。例如求值顺序,等同的字符串字面量是否为不同的对象,数组分配的开销,等等。每个未指明行为均产生合法结果集合中的一个结果。 https://zh.cppreference.com/w/cpp/language/eval_order |
19 NVDA 2021-12-03 17:17:00 +08:00 Don’t waste your time on such bs |
20 binfun 2021-12-03 17:31:53 +08:00 我也有个疑问: a += ++b+++++c++ |
21 anxxv2 2021-12-03 17:32:16 +08:00 via iPhone 22 是咋来的? |
| img src="https://cdn.v2ex.com/avatar/4174/e6b0/89202_normal.png?m=1648864294" class="avatar" border="0" align="default" alt="Leonard" data-uid="89202" /> | 22 Leonard 2021-12-03 17:36:03 +08:00 有些地方尽喜欢考这种垃圾写法的题 |
24 mainjzb 2021-12-03 18:52:21 +08:00 所以 go 禁止++嵌套写法 |
25 Croxx 2021-12-03 20:05:07 +08:00 via iPhone 讲道理你敢写这样的代码,老板就敢给你开掉。 |
26 smdbh 2021-12-03 20:18:06 +08:00 又搞回字 |
27 AdminNB 2021-12-03 21:49:17 +08:00 未定义行为( UB ) |
28 Zien 2021-12-04 00:33:38 +08:00 via iPhone 谭浩强 孔乙己 为让人内耗而设计的无意义 |