zoukankan      html  css  js  c++  java
  • unsigned 赋值负数输出情况 & printf输出格式

    %d 有符号10进制整数  
    %ld 长整型
    %hd短整型
    %i 有符号10进制整数
    %o 无符号8进制整数
    %u 无符号10进制整数
    %x 无符号的16进制数字,并以小写abcdef表示
    %X 无符号的16进制数字,并以大写ABCDEF表示
    %F/f 浮点数 %E/e 用科学表示格式的浮点数
    %g 使用%f和%e表示中的总的位数表示最短的来表示浮点数 G 同g格式,但表示为指数
    %c 单个字符
    %s 字符串

     unsigned int a = -1; 
     unsigned short b = -1;
     unsigned char c = -1;
     printf("%u, %d, %d, ",a,b,c);
    输出:4294967295, 65535, 255,

     unsigned int a = -1; 
     unsigned short b = -1;
     unsigned char c = -1;
     printf("%d, %d, %d, ",a,b,c);
    输出:-1, 65535, 255,
    a定义为unsigned 输出应该和上面的一样为4294967295啊
    因为%d是按int输出,所以后面两个数的存储仍然是按照所存储二进制输出,没有涉及到int最高位的符号位

        /*
        us的二进制表示是0xffff,以4个字节的int类型输出时表示的是0x0000ffff,所以输出65535
        un的二进制表示是0xffffffff,以4个字节的int类型输出时表示的是-1,所以输出-1
       
    */ 


     unsigned int a = -1; 
     unsigned short b = -1;
     unsigned char c = -1;
     printf("%d, %hd, %d, ",a,b,c);
    输出:-1, -1, 255,

    啊,各种地方都需要注意啊


    如果使用cout来输出:

     cout<< a<<endl;
     cout<< b<<endl;
     cout<< c<<endl;
    输出:4294967295, 65535,
    c我如果为-1没有输出,如果是0-255之间为对应的ascii码

      
        cout<<us<<endl;   // -1在无符号的short数据中是65535 
        cout<<un<<endl;   // -1在无符号的int数据中是4294967295

  • 相关阅读:
    第十次作业
    第九次作业总结
    第九次作业
    第八次作业总结
    第七次作业总结
    第六次总结
    第十二次作业总结
    第十一次作业总结
    第十次作业总结
    第九次作业总结
  • 原文地址:https://www.cnblogs.com/wwjdwy/p/3387648.html
Copyright © 2011-2022 走看看