每日一练4

Posted pquan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一练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 也就不为奇怪了

技术图片

 

以上是关于每日一练4的主要内容,如果未能解决你的问题,请参考以下文章

每日一练:打印从1到最大的n位数

蓝桥Java每日一练————3.合并两个有序链表

每日一练4

4.18 每日一练

Python每日一练——第4天:百钱百鸡问题(升级版)

4.4 每日一练