整形_長整型的使用範圍(兩個數的乘積)
阿新 • • 發佈:2017-07-19
code 兩個 方式 unsigned span 輸出 pre signed lib
整形_長整型的使用範圍(兩個數的乘積)
1.
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main() 5 { 6 printf("%ld\n",1000000*1000000%5); 7 printf("%lld\n",1000000*1000000%5); 8 9 long a=1000000; 10 printf("%ld\n",a*a%5); 11 printf("%lld\n",a*a%5); 12 13 long long b=1000000; 14 printf("%ld\n",b*b%5); 15 printf("%lld\n",b*b%5); 16 17 printf("%ld\n",(long long)1000000*(long long)1000000%5); 18 printf("%lld\n",(long long)1000000*(long long)1000000%5); 19 20 return 0; 21 }
I.%ld,%lld代表以什麽形式輸出結果,輸出結果的方式不影響運算過程。
II.當乘積大於整形範圍,在整形範圍之內時,乘數必須為長整形類型,如(long long)1000000*(long long)1000000%5 / long long b=1000000; printf("%ld\n",b*b%5); ,否則會出錯。
2.
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main() 5 { 6 /** 7 long -2147483648~2147483647 2.1*10^9(2^31) 8 unsigned long 0~4294967295 4.2*10^9(2^32) 9 (int 範圍與 long 相同) 10 long long:-9223372036854775807~9223372036854775808 9.2*10^18(2^63) 11 unsigned long long:0~18446744073709551615 1.8*10^19(2^64)12 (__int64 範圍與 long long 相同) 13 **/ 14 15 printf("%ld\n",2000000000);//<2147483647,Y 16 printf("%ld\n",1000000000*3%5);//>2147483647,N 17 18 long a=1e9,b=3; 19 printf("%ld\n",a*b%5);//>2147483647,N 20 21 unsigned long c=1e9,d=3; 22 printf("%lu\n",c*d%5);//<4294967295,Y 23 24 long long e=1e18,f=10; 25 printf("%ld\n",e*f%5);//>9223372036854775808,N 26 27 unsigned long long h=1e18,i=10; 28 printf("%llu\n",h*i%5);//<18446744073709551615,Y 29 return 0; 30 }
I.整數變量無標識時默認為整形變量。
II.unsigned long 輸出格式:%lu。
III.當輸出的值在輸出格式範圍之內,則輸出正確,否則不正確。
整形_長整型的使用範圍(兩個數的乘積)