|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include<stdio.h>
- int main()
- {
- long long unsigned int b = 11*12*13*14*15,a = 1*2*3*4*5*6*7*8*9*10*b;
- printf("%llu",a);
- return 0;
- }
复制代码
- #include<stdio.h>
- int main()
- {
- long long unsigned int a = 1*2*3*4*5*6*7*8*9*10*11*12*13*14*15;
- printf("%llu",a);
- return 0;
- }
复制代码
就第一种写法好像算出来是对的,但是第二种写法算出来不对,是因为什么
因为C语言中十进制字面量默认是int类型的,所以第二种写法a右边都默认是int类型,算到12后已经溢出了,所以结果不对,不对的结果赋值给long long unsigned也一样不对。
改一下让右边的字面量默认llu就可以了:
- #include<stdio.h>
- int main()
- {
- long long unsigned int a = 1LLU*2*3*4*5*6*7*8*9*10*11*12*13*14*15;
- printf("%llu",a);
- return 0;
- }
复制代码
|
|