CGL:在无符号整数数组上使用-1作为哨兵

CGL:在无符号整数数组上使用-1作为哨兵,第1张

概述我在一些GL代码中传递一个顶点索引数组…每个元素都是一个GLushort 我希望用一个标记终止,以避免每次与数组本身一起费力地传递数组长度. #define SENTINEL ( (GLushort) -1 ) // edit thanks to answers below:GLushort verts = {0, 0, 2, 1, 0, 0, SENTINEL}; 我不能使用0来终止,因为一 我在一些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是否是代码中的有效非标记值.

@H_301_37@ 总结

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1213826.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存