最强废铁h 发表于 2021-6-10 21:06:23

为什么是-14

结果为什么是-14





#include<stdio.h>
int main()
{char c;
c=0362;
printf("%d\n",c);
return 0;
}

不能懒 发表于 2021-6-10 21:16:56

0362是八进制数,然后换成十进制是214,由于char是有符号的,具体是怎么表示的,取决于符号位和负数补码的表示方法。最后输出结果-14

kogawananari 发表于 2021-6-10 22:29:57

char只能存八位二进制 也就是带符号的-128 到 127

类似于有符号的int只能存21.43亿

万千只cnm 发表于 2021-6-10 23:11:04

362(八进制) = 242(十进制)   ==11110010
符号位为 1 负数
%d 打印有符号数    取反加1 (就是其绝对值) --> 01110== 14
所以为 -14

15630468916 发表于 2021-6-11 12:58:54

你定义的c是char型,char只占一个字节,而你最后打印的%d对应的是整形变量
页: [1]
查看完整版本: 为什么是-14