只是想知道 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 函数数据传递或基于编译器?
谢谢干杯!!
只是想知道 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 函数数据传递或基于编译器?
谢谢干杯!!
您通过在同一语句中多次修改来调用未定义的行为。iData
由于行为是未定义的,不同的编译器可以为它做不同的事情,它们都不是错的。所以你真的不希望你的代码中有未定义的行为。
请参阅为什么这些构造(使用 ++)未定义行为?更多细节。
volatile
注意:代码中的奇怪行为与关键字无关。有关详细信息,volatile
请参阅为什么 C 中需要 volatile?