第一个程序char.c
unsigned char x = 2; signed char z = 5; if((x-z)<0) printf("x-z<0\n"); else if((x-z)>0) printf("x-z>0\n");
输出结果是 x-z<0
第二个程序int.c
unsigned int x = 2; signed int z = 5; if((x-z)<0) printf("x-z<0\n"); else if((x-z)>0) printf("x-z>0\n");
输出结果是x-z>0
一般来说,无符号数和有符号数混合运算时,会自动转换为无符号数,那为什么数据类型定义成char和int会有不同的结果呢?这是因为K&R C中关于整型提升(integral promotion)的定义为:
"A character, a short integer, or an integer bit-field, all either signed or not, or an object of enumeration type, may be used in an expression wherever an integer maybe used. If an int can represent all the values of the original type, then the value is converted to int; otherwise the value is converted to unsigned int. This process is called integral promotion."
参考http://blog.csdn.net/lovekatherine/article/details/1565969
相关推荐
用C语言分解大数,分解源代码,非常完美的哦i耦合vaibnviabvapivhkjbmhb
RSA加密算法+大数计算,实现超长明文加密
C 语言实现的斐波那契数列(fibnacii),非递归方式。斐波拉契数列当输入值大于某个值时,基本的整形变量将无法保存其结果,因此本例使用字符串返回斐波拉契的结果,其中包括用字符串实现的大数加法。
普通的整数用64bit来表示,大约是4*(1000)^6,即4*10^18,也就说能实现最大数为18位的十进制数相乘。如果要实现100或更多位十进制相乘,怎么办呢?这个资源解决了这个问题。
C语言 实现大数加法,在加法运算的时候假如有两个10000位数的两个数进行相加,那么用int long double型都装不下这么多位数,所以采用char数组来实现加法运算,解决精度的问题
采用模拟人的加法运算和乘法运算,计算超过百位的整数,实现算法为c语言,可以在cmd通过命令进行运算
MIRACL(Multiprecision Integer and RationalArithmetic C/c++ Library)是一套由Shamus Software Ltd.所开发的一套关于大数运算函数库,用来设计与大数运算相关的密码学之应用,包含了RSA 公开密码学、Diffie-...
用C语言学的大数相乘的实例,可以计算任意长度的数字的乘法(自己设置数组长度),数据结构
c语言实现的大数四则运算
C语言中如何实现大数计算
用C语言和链表编写的大数相加程序,想学链表的不要错过,程序里的不足请多指教
用C语言实现的大数的封装,在.h头文件中介绍了包含的所有函数,主要提供大数的数据类型(包含负数)和大数相加,大数相减,大数乘法。由我个人实现,如有什么建议欢迎指点
学生成绩管理系统V1.0学生成绩管理系统V1.0学生成绩管理系统V1.0学生成绩管理系统V1.0
C语言实现大数计算器(只包含加减)
C语言 大数运算(无限大小)头文件 支持 + , - , * , / , % ,> , ,>=,,==.流输入>>,流输出<<.
两个超过计算机所能表示的数相乘,利用数组存储大数,进行相乘
用C写的大数减法程序,整个程序用的是链表,有些不足之处请指教
16进制大数乘法,支持unsigned char 数组数据,任意长度相乘
实现了两个大数相乘的小程序,数组大小可自行指定,欢迎大家进行验证
acm大数加法的C语言实现,使用数组进行过程模拟,同时注意字符串中ASCII码的转换