相关疑难解决方法(0)

C++中的int和long有什么区别?

如果我错了,纠正我,

int是4个字节,从-2,147,483,648到2,147,483,647(2 ^ 31)
长的值范围是4个字节,值范围从-2,147,483,648到2,147,483,647(2 ^ 31)

C++有什么区别?它们可以互换使用吗?

c++ variables

113
推荐指数
9
解决办法
10万
查看次数

什么是CHAR_BIT?

引用用于计算整数绝对值(abs)的代码而不分支来自http://graphics.stanford.edu/~seander/bithacks.html:

int v;           // we want to find the absolute value of v
unsigned int r;  // the result goes here 
int const mask = v >> sizeof(int) * CHAR_BIT - 1;

r = (v + mask) ^ mask;
Run Code Online (Sandbox Code Playgroud)

专利变化:

r = (v ^ mask) - mask;
Run Code Online (Sandbox Code Playgroud)

CHAR_BIT它是什么以及如何使用它?

c bit-manipulation

86
推荐指数
3
解决办法
7万
查看次数

可移植代码 - 每个字符的位数

我知道C/C++标准只能保证每个字符最少 8位,理论上9/16/42 /其他任何东西都是可能的,因此所有关于编写可移植代码的网站都会警告不要假设8bpc.我的问题是"非便携式"这是真的吗?

让我解释.在我看来,有三类系统:

  1. 计算机 - 我的意思是台式机,笔记本电脑,服务器等,运行Mac/Linux/Windows/Unix/*nix/posix /等等(我知道这个列表并不严格,但你明白了).听到任何这样的系统char完全是 8位,我会感到非常惊讶.(如果我错了,请纠正我)
  2. 带操作系统的设备 - 包括智能手机和此类嵌入式系统.虽然我发现这样一个系统的char位数比8位多,我不会感到非常惊讶,但我还没有听说过一个这样的系统(如果我不知道的话,请再次通知我)
  3. 裸机设备 - 录像机,微波炉,旧手机等.在这个领域我没有丝毫的经验,所以任何事情都可能发生在这里.但是,我真的需要我的代码在我的Windows桌面和微波炉之间跨平台吗?我可能有两个共同的代码吗?

底线:是否有共同的(大于%0.001)平台(在类别1和2以上),其中char不是 8位?我的上述猜测是真的吗?

c c++ bits char

27
推荐指数
2
解决办法
6086
查看次数

在C中表示负数?

C如何表示负整数?

它是通过二进制补码表示还是使用MSB(最重要的位)?

-1十六进制是ffffffff.

所以请为我澄清一下.

c negative-number twos-complement language-lawyer

22
推荐指数
3
解决办法
2万
查看次数

C标准malloc'ing字符的潜在问题

在回答对我的另一种答案评论在这里,我找到了我想可能是在C标准(孔C1X,我没有检查的早期的,是的,我知道这是令人难以置信的可能性不大,我独自所有中行星的居民在标准中发现了一个错误).信息如下:

  1. 第6.5.3.4节("运营商规模")第2段规定"The sizeof operator yields the size (in bytes) of its operand".
  2. 该部分第3段指出:"When applied to an operand that has type char, unsigned char, or signed char, (or a qualified version thereof) the result is 1".
  3. 第7.20.3.3节描述void *malloc(size_t sz)但所有内容都是"The malloc function allocates space for an object whose size is specified by size and whose value is indeterminate".它根本没有提到用于论证的单位.
  4. 附件E开始时8是最小值,CHAR_BIT因此字符长度可以超过一个字节.

我的问题很简单:

在char为16位宽的环境中,将malloc(10 * sizeof(char))分配10个字符(20个字节)或10个字节?上面的第1点似乎表示前者,第2点表示后者.

任何比我更有C-standard-fu的人都有这个答案?

c malloc standards sizeof c11

7
推荐指数
1
解决办法
806
查看次数