给定float ar[] = {0,0,1,2.7};

printf("%f", ar[++2]);

问题1)能否请您告诉我为什么会出错:使用c语言在gcc编译器中将lvalue用作增量操作数。

Q 2)为什么int ar[] = {0,0,1,2.7};
printf("%f", ar[3]);

输出0.000000?是因为2.7无法转换为整数吗?而且它不能转换为整数,因为与浮点数相比,整数存储在小字节的字节中?
ar[i]++ar[i++]ar[++i]有什么区别?

最佳答案



因为文字值2不是您可以修改的左值。 ++2没有任何意义。


ar是一个int数组。因此,由于格式说明符不正确,使用ar[3]打印%f会导致undefined behaviour。使用%d打印int值。

关于c - 示例前后增量的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42009526/

10-16 19:09