C语言在VC++6.0环境中编译,整型变量占4个字节,范围是-2147483648-2147483647。1)基本型:类型说明符为int,在内存中占4个字节;2)短整型:short int或short,所占字节和取值范围基本相同;3)长整型:long int或long,在内存中占4个内存;4)无符号型:为unsigned。在书写变量定义时,需注意:1 int占用2字节,16比特。在3...
short的输出格式是%hd unsigned short的输出格式是 %hu 特别老旧的编译器可能不支持这两个格式符,比如30几年前的Turbo C就不支持
include<stdio.h> int main(){ int x;scanf("%d",&x);int i = 1, temp = x;while( temp > 0 ){ i*=10;temp/=10;} x = x - (i/10 )* (x/(i/10));printf("%d\n",x);return 0;}
那么输出前就得进行“符号位扩展”成4字节,由于无符号类型的“符号位”被认为是0,所以c被扩展为00000000 0000000 11111111 11111001;而输出时前导0是默认要消除的,所以最后输出为FFF9——或者干脆可以理解为“无符号型不进行‘符号位扩展’(因为‘无’符号)”。
用位运算呗, 短整型16位, 一个个位移过去与1做与运算就得到该位是0还是1了.include <stdio.h> int main(void){ unsigned short value;int i;printf("Input value:");scanf("%hu", &value);for (i = 15; i >= 0; i--) { printf("%d", (value >> i) & 0x1);} puts("")...
你的程序没有问题啊,只不过这句scanf("%d,%c",&x,&c);你输入的时候应该这样:10,O 15,X 记得一定要有逗号哦,因为scanf中"%d,%c"有一个逗号