zoukankan      html  css  js  c++  java
  • 每日一练4

    #include<stdio.h>
    void main()
    {
    unsigned char a=6;
    int b=-20;
    (a+b)?puts(">6"):puts("<=6");
    return 0;
    }
    a+b 为非0数 就是真 所以输出 ">6"
    楼主应该想问的是(a+b>6)?puts(">6"):puts("<=6");的输出结果吧

    有个基础 知识 类型的隐式转换 就是 char 必转 int
    当计算 a+b 的 时候 unsigned char a 先转换为 int 还是 6
    a+b 的 结果一定为int 值 为 -14 输出 "<=6"


    如果说 unsigned char a = -20; int b = 6 结果?
    unsigned char a 转换为 int 为 236 原因是 unsigned char 补齐位 是补0
    a+b 返回的类型一定是int 且 结果 肯定是个 大于6的数 输出 ">6"

    另一种情况 unsigned int a = 6; int b= - 20; 其实 肯定大于0的
    a是 unsigned int 不用转换 , b需要转换 因为要和 a的类型 对齐;
    int b 转换为 unsigned int 是个很大的数
    两个unsigned int 相加 结果也一定为 无符号型 整数 输出 >6 也就不为奇怪了

  • 相关阅读:
    ADO.Net对Oracle数据库的操作(转)
    代码反思(1)
    继承与多态
    存储过程
    linux学习流程及内容概括
    Linux下终端快捷键
    查找算法
    epoll解读
    TCP/udp编程
    如何学习嵌入式
  • 原文地址:https://www.cnblogs.com/pquan/p/12675535.html
Copyright © 2011-2022 走看看