C语言的转化问题
把-2转化成无符号的十进制数,怎么转化?
负数在内存中的二进制是绝对值的二进制取反加1。 2 :0000 0000 0000 0010 取反:1111 1111 1111 1101 加1 :1111 1111 1111 1110 则,-2在内存中的存放形式是1111 1111 1111 1110。 而且,有符号基本整型数的16位中,最左边第一位是符号位,0为正,1为负。这个结果也符合这个规律。 对于无符号数,左边第一位就是数据的第一位。 1111 1111 1111 1110的十进制计算式是2的15次方加2的14次方……一直加到2的1次方。也相当于无符号整型的最大值减1,那就是2的16次方减1再减1,就是65535-1,即65534
和楼上的差不多,关键是你想要那种整型,长整型(long),整型(int),还是短整型(short), -2转换成unsigned 之后,会上溢出,之后得到的就是对应的值 至于char 那个是字符.....
这个问题可得小心。关键是怎么定义整数的。 比如unsigned char a = (unsigned char)-2; 和unsigned short a = (unsigned short)-2; 和unsigned long a = (unsigned long)-2; 和... 都大不一样,只有中间那个是65534,第一个是254,最后那个更大。
1、使用printf("%u",-2),按无符号十进制格式输出,结果65534。 2、声明一个unsigned int变量,赋值为-2,然后%u输出变量。结果65534。
问:挺简单的一C函数,不过我是初学者,暂时还不会写,请好心人多多帮忙!
答:int mystrlen(char *str) { int n = 0; while (*str) { n++; str++;} return n; } voi...详情>>