我有一个人声称这条线不在C++标准中:
int i(1);
array_of_int[i] = i++;
Run Code Online (Sandbox Code Playgroud)
该人士表示,将指派1,但我们无法知道它是否会在array_of_int[1]或array_of_int[2]虽然Visual Studio和大多数编译器都会在array_of_int[1].
他是对的吗?
这是未定义的行为.字面上任何行为都是合法的.
禁止这行代码的段落是这样的:
在前一个和下一个序列点之间,对象的存储值最多只能通过表达式的计算来修改一次.此外,先前的值应该只读以确定要存储的值
之间不存在序列点a[i],并i++和读取到i的a[i]不是决定什么值存储在目的i的i++.
| 归档时间: |
|
| 查看次数: |
680 次 |
| 最近记录: |