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

#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;负数转为无符号后会变成巨大正数,判断逻辑完全反转。

相关推荐
估值探索者1 小时前
【Python量化策略实战 #04】Donchian 通道假突破太多?用 ATR 阈值过滤跑通真实突破信号
开发语言·python·接口·api接口·数据api接口·股票数据api接口
个 人 练 习 生1 小时前
C++:模板初阶详解
开发语言·c++·经验分享·学习
aixingpan1 小时前
aixingpan.cn API开发文档:api_docs_bichart_natalvssecondary2接口指南
前端·php
梦帮科技1 小时前
多任务权重流形融合:SLERP 球形线性插值、DARE 稀疏剪枝与多专家模型融合落地
人工智能·深度学习·算法·机器学习·tensorflow·聚类·剪枝
Tisfy1 小时前
LeetCode 0020.有效的括号:栈匹配
算法·leetcode·字符串·题解·括号匹配
知识分享小能手1 小时前
C++ 学习教程,从入门到精通,C++类继承 — 完整知识点详解(13)
开发语言·c++·学习
YYRAN_ZZU1 小时前
如何编一个gcc的交叉工具链
linux·c++
liangshanbo12151 小时前
Webpack Tree Shaking 面试题整理
前端·webpack·node.js
弹简特1 小时前
【Java项目-企悦抽】15-活动管理模块02-活动创建测试与活动列表实现
java·开发语言·springboot