Does int a=1, b=a++;
调用未定义的行为?初始化之间没有序列点介入a
及其在初始化程序中的访问和修改b
,但据我所知,初始化不是对象的“修改”;指定初始值设定项来给出对象的“初始值”。根据 6.7.8 初始化,第 8 段:
初始化器指定存储在对象中的初始值。
将“初始”视为在对对象的任何访问之前进行排序似乎是合理的。这个问题以前被考虑过吗?有公认的解释吗?
它不会调用未定义的行为。 6.7.6(3)中规定
完整声明符是不属于另一个声明符一部分的声明符。一个完整的结束
声明符是一个序列点。
完整声明符的末尾是一个序列点。
int a = 1, b = a++;
// ^ end of full declarator
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)