jay*_*aya 2 c c++ undefined-behavior
有关序列点的规则对以下代码有何规定?
int main(void) {
int i = 5;
printf("%d", ++i, i); /* Statement 1 */
}
Run Code Online (Sandbox Code Playgroud)
只有一个%d.我很困惑,因为我在编译器GCC,Turbo C++和Visual C++中获得了6个输出.行为是明确界定还是什么?
这与我的上一个问题有关.
由于以下两个原因,它未定义:
值的i两次没有插入序列点(参数列表中的逗号不是逗号运算符,也不引入序列点).
你在没有范围原型的情况下调用可变函数.
传递给的参数数量printf()与格式字符串不兼容.
默认输出流通常是行缓冲的.如果没有'\n',则无法保证输出有效输出.
| 归档时间: |
|
| 查看次数: |
206 次 |
| 最近记录: |