有符号变量与无符号变量的区别

#include <stdio.h>

char getChar(int x, int y)

{

char c;

unsigned int a = x;

(a + y > 10)? (c = 1): (c = 2);

return c;

}

int main(void)

{

char c1 = getChar(7,4);

char c2 = getChar(7,3);

char c3 = getChar(7,-7);

char c4 = getChar(7,-8);

printf("c1 = %d\n", c1);

printf("c2 = %d\n", c2);

printf("c3 = %d\n", c3);

printf("c4 = %d\n", c4);

return 0;

}

首先说明一下 getChar() 函数的作用。 getChar() 有两个输入参数,分别是整型的 x 和 y。在函数体内,把参数 x 的值转换为无符号整型后再与 y 相加,其结果与 10 进行比较,如果大于 10 则返回 1,否则返回 2。

完整4组重新演算

  1. getChar(7,4) : 7+4=11>10 → c1=1

  2. getChar(7,3) : 7+3=10 ,不大于10 → c2=2

  3. getChar(7,-7) : 7 + (-7) 无符号加法溢出,结果=0 → 0>10不成立 → c3=2

  4. getChar(7,-8) : 7 + (-8) 无符号加法,结果=0xFFFFFFFF → 大于10 → c4=1

输出:

c1 = 1

c2 = 2

c3 = 2

c4 = 1

一句话总结:

有符号int和无符号unsigned int混合运算/比较,int会转为unsigned;负数转为无符号后会变成巨大正数,判断逻辑完全反转。

相关推荐
·present·4 小时前
CSAPP(lecture 4_01)
c语言·c++
FPGA小迷弟4 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整实践指南
c++·python·ai·plotly·django·ai编程·claude
秋天的怀念_David5 小时前
算法一千零一夜 · 第十四夜 幻方与奇妙的二进制
java·程序人生·算法
九零HTTP5 小时前
10月21号-CSDN配菜-IP池的5个坑
服务器·数据库·tcp/ip
薛定e的猫咪5 小时前
(ICLR 2020)MAML 靠的不是快速学习,而是特征复用
人工智能·深度学习·学习·算法·机器学习
风骏时光牛马5 小时前
从零到实战:AI全栈学习进阶路线
前端
fanruitian5 小时前
python else用法
开发语言·python
程序员-King.5 小时前
【ROS1】Noetic 开发工作流程与常用命令
c++·ubuntu·ros
SHENGWEI胜为5 小时前
交换机端口显示正常,终端却获取不到 IP 地址?从 DHCP 流程定位故障
服务器·网络·测试工具·缓存·通信工程
极光通讯5 小时前
液冷服务器对内存和SSD的适配要求:高密度部署下的散热与信号完整性
运维·服务器