C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C / GL:在无符号整数数组上使用-1作为哨兵大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在一些GL代码中传递一个顶点索引数组…每个元素都是一个GLushort

我希望用一个标记终止,以避免每次与数组本身一起费力地传递数组长度.

#define SENTinEL ( (GLushort) -1 ) // edit thanks to answers below
:
GLushort verts = {0,2,1,SENTinEL};

我不能使用0来终止,因为一些元素的值为0

我可以使用-1吗?

根据我的理解,这将包装到GLushort可以表示的最大整数,这将是理想的.

但这种行为在C中是否得到保证?

(我找不到这种类型的MAX_INT等效常量,否则我会使用它)

解决方法

如果GLushort确实是无符号类型,则(GLushort)-1是GLushort的最大值. The C standard guarantees that.所以,你可以安全地使用-1.

例如,C89没有SIZE_MAX宏作为size_t的最大值.它可以由用户可移植地定义为#define SIZE_MAX((size_t)-1).

这是否可以作为代码中的标记值取决于(GLushort)-1是否是代码中的有效非标记值.

大佬总结

以上是大佬教程为你收集整理的C / GL:在无符号整数数组上使用-1作为哨兵全部内容,希望文章能够帮你解决C / GL:在无符号整数数组上使用-1作为哨兵所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。