1

只是想知道 volatile 关键字在内部是如何工作的。

尝试使用 GCC 和 Turbo C(基于 DOS)两种情况,它的行为方式不同。

volatile int iData;
iData = 5;
printf("%d %d %d %d %d %d\n", ++iData, iData++, iData++, ++iData, iData, iData++);

输出是否取决于 printf 函数数据传递或基于编译器?

谢谢干杯!!

4

1 回答 1

2

您通过在同一语句中多次修改来调用未定义的行为。iData由于行为是未定义的,不同的编译器可以为它做不同的事情,它们都不是错的。所以你真的不希望你的代码中有未定义的行为。

请参阅为什么这些构造(使用 ++)未定义行为?更多细节。

volatile注意:代码中的奇怪行为与关键字无关。有关详细信息,volatile请参阅为什么 C 中需要 volatile?

于 2013-04-10T05:10:26.930 回答