|
|
1
4
是的,形式上不确定值的rvalue转换是UB(除了
我懒得为你做标准的段落查找,也懒得去关心那次的否决票 然而,在实践中,只有一个问题(1)古老的架构,也许(2)64位系统。 编辑 :oops,我现在似乎想起了一篇关于访问不确定字符的正式UB的博客文章和相关的缺陷报告。所以也许我得检查一下标准,+搜索博士。阿尔格,那得晚些时候,现在咖啡! 编辑2 :Johannes Schaub很好地提供了这个 link to SO question 讨论了访问char的UB。所以,那就是我记得的地方!谢谢,约翰。 干杯。, |
|
|
2
6
这个问题的答案随着最新的C++ 1Y工作草案而改变。
接下来列出了一些例外情况 无符号窄字符类型 只是,我有一个完整的报价 Has C++1y changed with respect to the use of indeterminate values and undefined behavior? .
所以对你来说
以前我们需要使用左值到右值的转换来证明这是未定义的,但是这是有问题的,因为 the conversion is underspecified . 请注意,不确定值在本节中是斜体化的,因此意味着它被定义在适当的位置,因此现在C++ 1Y实际上定义了这个术语。以前这个术语没有定义,这在 defect report 616 . |
|
|
3
5
打开
脚注说明:
|
|
|
4
0
阅读一个不确定的值通常会导致不确定的行为,这不仅仅是一个“理论”问题。即使对于所有可能的位模式都定义了值的类型,也不应认为不确定值的行为方式不同于未指定值是“令人惊讶的”。例如,如果*p包含不确定值,并且除了 如图所示,代码:
可以重写为:
如果*p的值是不确定的,编译器就不会被禁止 两个“if”语句之间的代码修改了它的值。 例如,如果*p占用的存储器被“float”占用 在释放和重新malloc'ed之前,编译器可能会编写“float” 上述两个“if”语句之间的值。 |
|
|
Tom Buck · c#程序在整数列表上冻结 7 年前 |
|
|
Ran Lavi · 在c中初始化结构的指针++ 7 年前 |
|
|
Js_zero · 在c++中实例化对象有几种方法,它们之间有什么区别 7 年前 |
|
|
jfernal · 节点。js在加载其他函数之前等待初始化变量 7 年前 |
|
|
Victor · 在javafx中运行时更改标签文本 7 年前 |
|
|
blubb · 在Kotlin中是否有更惯用的方法来初始化此映射? 7 年前 |
|
|
Bing Bang · 初始化包含字节数组的结构数组 7 年前 |