bywfssl 2017-08-04 01:50 采纳率: 100%
浏览 17754

C语言中unsigned short 占几位?

 #include<stdio.h>

main()
{
    unsigned short  a,z;  
    printf("please input an octal number:\n");
    scanf("%o", &a);                    /*输入一个八进制数*/
    z=a & 0100000;                  /*0100000的二进制形式为最高位为1,其余为0*/
    if(z==0100000)                  /*如果a小于0*/
        z=~a+1;                 /*取反加1*/
    else
        z=a;    
    printf("the result is %o:\n", z);           /*将结果输出*/
}



这段代码中为什么是&0100000?
例:输入153565

  • 写回答

4条回答 默认 最新

  • cao_yanjie 2017-08-04 03:00
    关注

    和机器字长及编译器有关系:
    所以,int,long int,short int的宽度都可能随编译器而异。但有几条铁定的原则(ANSI/ISO制订的):
    1 sizeof(short int)<=sizeof(int)
    2 sizeof(int)<=sizeof(long int)
    3 short int至少应为16位(2字节)
    4 long int至少应为32位。

    unsigned 是无符号的意思。
    例如:
    16位编译器
    char :1个字节
    char*(即指针变量): 2个字节
    short int : 2个字节
    int: 2个字节
    unsigned int : 2个字节
    float: 4个字节
    double: 8个字节
    long: 4个字节
    long long: 8个字节
    unsigned long: 4个字节

    32位编译器

    char :1个字节
    char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
    short int : 2个字节

    int: 4个字节
    unsigned int : 4个字节
    float: 4个字节
    double: 8个字节
    long: 4个字节
    long long: 8个字节
    unsigned long: 4个字节

    64位编译器
    char :1个字节
    char*(即指针变量): 8个字节
    short int : 2个字节
    int: 4个字节
    unsigned int : 4个字节
    float: 4个字节
    double: 8个字节
    long: 8个字节
    long long: 8个字节
    unsigned long: 8个字节

    评论

报告相同问题?

悬赏问题

  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形