【发布时间】:2012-09-25 16:04:05
【问题描述】:
由于数字的不同二进制表示(例如,采用大/小端),这是跨平台的吗:
// NOTE: FIXED-SIZE unsigned integral type
some_unsigned_type variable = some_number;
// set n-th bit, starting from 1,
// right-to-left (least significant-to most significant)
variable |= ( 1 << ( n - 1 ) );
// clear the same bit:
variable &= ~( 1 << ( n - 1 ) );
换句话说,编译器是否总是处理固定大小无符号数的不同二进制表示,还是特定于平台的?
如果variable是有符号整数类型(例如int)并且它的值为
- 零
- 阳性
- 否定的?
标准对此有何规定?
附注而且,是的,我对 C 和 C++ 都很感兴趣,请不要告诉我它们是不同的语言,因为我知道 :)
如果需要,我可以粘贴真实示例,但帖子会变得太长
【问题讨论】:
-
C 的哪个版本?如果您的目标是 C99,则可以访问
stdint.h,它为您提供了许多整数类型的跨平台选项。 -
即使您对 C++ 和 C 这两种语言都感兴趣,但并非所有人都精通这两种语言,以确保提供真正适用于这两种语言的答案。
标签: c++ c cross-platform standards bit-manipulation