1. 程式人生 > >整形_長整型的使用範圍(兩個數的乘積)

整形_長整型的使用範圍(兩個數的乘積)

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.當輸出的值在輸出格式範圍之內,則輸出正確,否則不正確。

整形_長整型的使用範圍(兩個數的乘積)