这个C函数有什么问题?(printf() with getchar())


printf( "%3ot%2xt%3dt%cn", c = getchar(), c, c, c );

我得到一个警告,说"未测序的修改和访问'c' [- unsequenced]"。这个错误很容易修复;我所要做的就是把getchar()printf()中分离出来,但是我只是想更好地理解为什么这个指令会产生警告,以及如果我实际运行它会出现什么问题。

这是否与printf()使用CPP宏的可变长度参数列表的实现有关?

传递给函数调用的参数的求值顺序为unspecified。在c的最后三个参数被读取之前,不能保证getchar()的结果会被赋值给c

在函数调用之外调用c = getchar()可以修复这个问题。

最新更新