不懂就问 为什么这里计算要转为二进制
#include <stdio.h>int main()
{
unsigned char a, b, c;
b = c = 200;//200(10) == 128(10) + 64(10) + 8(10) == 1000 0000(2) + 100 0000(2) + 1000(2) == 1100 1000(2)
a = b + c;//1100 1000(2) + 1100 1000(2) == 1 1001 0000(2),这里为什么要把十进制转换为二进制再把结果转回十进制?
printf("a = %u\n", a);
return 0;
} 本帖最后由 墨羽岚 于 2020-3-18 10:20 编辑
emm其实我没看懂你在说啥{:10_306:}
我记得c语言运行时是以二进制形式运行的(当然也可能是我记错了{:10_264:} )
但是你这题不就是定义两个无符号字符型b,c然后赋值200给它们后相加再赋值给a吗{:10_245:} 没看懂意思{:10_282:}
你问的是为什么注释中先将它们转成二进制计算,再转回十进制吗?
这里是为了让你看明白计算的过程,因为unsigned类型是一个字节。a=b+c,运算的结果已经溢出了(最高位的1已经超范围了),所以实际上得到的a=1001 0000(2),而不是1 1001 0000(2)。 sunrise085 发表于 2020-3-18 10:29
你问的是为什么注释中先将它们转成二进制计算,再转回十进制吗?
这里是为了让你看明白计算的过程,因为un ...
{:10_288:}
页:
[1]