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