为什么printf中有不同的输出,a和a + 1之间的输出相同?
问题描述:
当我的代码在C编程,我写:为什么printf中有不同的输出,a和a + 1之间的输出相同?
a = 2;
printf("%d %d", ++a, a);
和
a = 2;
printf("%d %d", ++a, a + 1);
类似输出
3 3
,但是当我换他们,他们指出错误:
a = 2;
printf("%d %d", a, ++a);
3 3
和
a = 2;
printf("%d %d", a+1, ++a);
4 3
为什么会有不同的输出?
答
printf("%d %d", a, ++a);
这会导致未定义的行为。 这取决于printf()
如何处理争论。
因为没有指定'printf()'如何处理参数!这是不明确的行为! – Rizier123 2014-11-23 05:49:13
为什么a + 1和a有相同的输出? – noname 2014-11-23 05:52:52
因为没有指定printf处理的内容!所以可能是第二个参数是第一个,2 + 1是输出3(没有赋值给a),然后参数1被处理,而2增量也是3! – Rizier123 2014-11-23 05:55:07