Siv*_*nan 4 c c++ memory bits char
多达255个,我能理解整数如何被存储在char和unsigned char;
#include<stdio.h>
int main()
{
unsigned char a = 256;
printf("%d\n",a);
return(0);
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,对于unsigned char和char,我的输出为0.
对于256我认为这是整数存储在代码中的方式(这只是猜测):
第一个256转换为二进制表示,即100000000(总共9位).
然后他们删除删除最左边的位(设置的位),因为char数据类型只有8位内存.
因此它在内存中存储为00000000,这就是为什么它的打印0作为输出.
猜测是否正确或有任何其他解释?
Mik*_*our 12
你的猜测是正确的.转换为无符号类型使用模运算:如果该值超出范围(太大或负),则以2 N为模减少,其中N是目标类型中的位数.因此,如果(通常情况下)char具有8位,则该值以256为模减少,因此256变为零.
请注意,没有此类规则可转换为签名类型 - 超出范围的值会提供实现定义的结果.另请注意,char未指定具有正好8位,并且在较不主流的平台上可以更大.