.net 网站开发视频教程,中国建设学会查询网站,小程序搭建是什么意思,网站建好了 怎么建后台在c中#xff0c;当把一个表示范围更大的类型的数值a赋值给一个表示范围更小的类型时#xff0c;会自动进行强制类型转换#xff0c;转化为范围表示更大的类型。 转换的规律是#xff0c;这里假定较小的类型表示的数值的个数为n。转化后的值为a模n后的余数。 对于整型数a中当把一个表示范围更大的类型的数值a赋值给一个表示范围更小的类型时会自动进行强制类型转换转化为范围表示更大的类型。 转换的规律是这里假定较小的类型表示的数值的个数为n。转化后的值为a模n后的余数。 对于整型数ab来说取模运算或者求余运算的方法都是 1.求 整数商 c a/b; 2.计算模或者余数 r a - c*b. 求模运算和求余运算在第一步不同: 取余运算在取c的值时向0 方向舍入(fix()函数)而取模运算在计算c的值时向负无穷方向舍入(floor()函数)。 例如计算-10 Mod 4 那么a -10b 4 第一步求整数商c如进行求模运算c -3向负无穷方向舍入求余c -2向0方向舍入 第二步计算模和余数的公式相同但因c的值不同求模时r 2求余时r -2。 归纳当a和b符号一致时求模运算和求余运算所得的c的值一致因此结果一致。 当符号不一致时结果不一样。求模运算结果的符号和b一致求余运算结果的符号和a一致。 另外各个环境下%运算符的含义不同比如c/cjava 为取余而python则为取模。 1 #includeiostream
2 using namespace std;
3 int main()
4 {
5 unsigned u10;
6 int i-11;
7 coutuiendl;
8 return 0;
9 } 2^324294967296i对4294967296取余得4294967296-114294967285 所以结果为4294967285104294967295 1 #includeiostream
2 using namespace std;
3 int main()
4 {
5 unsigned u10;
6 int i-9;
7 coutuiendl;
8 return 0;
9 } 如上代码所不同的是int的值改为-9看上去绝对值比u小 i取余的4294967296-94294967287 所以结果为4294967287104294967297超过了2^32所以结果为4294967297对2^32取余结果为1。 当无符号数进行减法运算时实际上是按有符号进行运算然后类型转换 1 #includeiostream
2 using namespace std;
3 int main()
4 {
5 unsigned u112,u210;
6 coutu1-u2endl;
7 coutu2-u1endl;
8 return 0;
9 } 第一个输出毫无疑问为2。 第二个输出按有符号为-2转化为unsigned后的值为4294967296-24294967294。 转载于:https://www.cnblogs.com/wktwj/p/4419758.html