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

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

相关推荐
非优秀程序员4 小时前
第10章 千团出世|《互联网产品恩仇录》
前端
非优秀程序员4 小时前
第11章 小高在对面|《互联网产品恩仇录》
前端
非优秀程序员4 小时前
第14章 只剩美团|《互联网产品恩仇录》
前端
非优秀程序员4 小时前
第09章 老乡何必为难老乡|《互联网产品恩仇录》
前端
非优秀程序员4 小时前
第03章 三大门户,烽烟起于瀛海威|《互联网产品恩仇录》
前端
非优秀程序员4 小时前
第05章 播放器大战,暴风、快播与那一夜|《互联网产品恩仇录》
算法
知已难寻5 小时前
Docker 入门:容器技术与 Docker 基础
java·运维·服务器·docker·云原生·容器
沐晓时光5 小时前
C语言入门,内存函数知识讲解
c语言·开发语言
曦樂~8 小时前
【Web Development】02 CSS
前端·css