|
C语言中存在两种整数算术运算,有符号型和无符号型。无符号数运算:所有无符号数运算都是以2的n次方为模,(n是结果中的位数)。所以它不存在运算时的没有那种所谓的“溢出”,当它超过范围时,从零开始重新计数!当一个无符号数和有符号数相加的时候,有符号数会自动转化为无符号数参与运算!有符号数运算: 是可能发生“溢出”的,而且“溢出”的结果不固定。 关于无符号数减去无符号数的用法错误: if ( i - j >=0) 假如i,j为无符号数,这样写可能会引发错误,即当i小于j的时候,这个式子仍然成立,因为无符号数始终是大于等于零的。例: if ( strlen( a ) >= 10) 与 if (strlen ( b ) -10 >= 0) 这两条语句是不相等的 ,因为strlen函数返回的是无符号数类型。 ANSI C规定在无符号整数和有符号整数之间进行强制类型转换时,位模式不应该改变。类型转换并未改变对象的位模式,改变的是位模式的解释方式。 |
C语言中 有符号数、无符号数、整数溢出
最新推荐文章于 2024-09-13 00:10:01 发布
本文详细介绍了C语言中整数运算的两种类型:有符号数运算与无符号数运算。阐述了两者在运算过程中的特点与区别,特别强调了无符号数运算不会出现溢出现象,而有符号数运算可能导致溢出,并通过实例展示了无符号数减法的用法错误。同时,讨论了不同类型的整数在相互转换时的规则。

1966

被折叠的 条评论
为什么被折叠?



