2014-11-23 71 views
0

当我的代码在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 

为什么会有不同的输出?

+0

因为没有指定'printf()'如何处理参数!这是不明确的行为! – Rizier123 2014-11-23 05:49:13

+0

为什么a + 1和a有相同的输出? – noname 2014-11-23 05:52:52

+0

因为没有指定printf处理的内容!所以可能是第二个参数是第一个,2 + 1是输出3(没有赋值给a),然后参数1被处理,而2增量也是3! – Rizier123 2014-11-23 05:55:07

回答

0
printf("%d %d", a, ++a); 

这会导致未定义的行为。 这取决于printf()如何处理争论。

相关问题