由于存在各种类型的64位数据模型(LLP64/IL32P64、LP64/I32LP64、ILP64、SILP64),那么指定64位无符号整数文字的标准一致性方法是什么?
指定ULL的后缀就足够了吗?或者我最终会导致文字在某些数据模型上被解释为128位?
发布于 2012-10-31 21:53:26
你应该使用 / ,如果你有的话。这将为您提供:
uint64_t是64位的无符号整数类型sizeUINT64_C()是一个宏用来创建uint64_t类型的常量,方法是使宏附加适当的后缀。发布于 2012-10-31 21:27:00
据我所知,没有办法将整型文字作为后缀添加到特定的位宽;您唯一的选择是l、ul、ll和ull。
如果你是偏执狂,你将不得不把你的文字包装在一个#if中,检查long / long long的大小。
话又说回来,正如KennyTM上面指出的,只要你的文字在64位范围内,并赋予一个64位的值,那么文字本身是64位还是128位并没有多大关系,不是吗?
发布于 2012-10-31 21:42:42
在大多数情况下,这都无关紧要。如果你不给它一个后缀,整型文字的类型是由它的值决定的。如果编译器有一个32位的unsigned long和一个64位的unsigned long long,如果一个无符号的值太大而无法放入unsigned long,但对于unsigned long long来说又不是太大,那么它的类型将是unsigned long long。
https://stackoverflow.com/questions/13158501
复制相似问题