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 也就不为奇怪了

  • 相关阅读:
    HDU 1495 广度优先搜索
    oj 1792:迷宫 广搜和深搜
    oj 1756:八皇后 搜索
    OJ1700 八皇后问题 基本搜索算法
    PAT A1020
    PAT A1103
    PAT A1046 Shortest Distance
    PAT A1059
    PAT B1013
    二分查找
  • 原文地址:https://www.cnblogs.com/pquan/p/12675535.html
Copyright © 2011-2022 走看看