大家好,欢迎来到IT知识分享网。
前言
最近刷题的时候遇到了一个问题,是关于变量在运算过程(并不是最终结果)中超出其变量范围引起的错误,故写此文章。
一、什么时候需要1LL
这里举个例子,比如我一个int类型的数据需要进行一个运算 */1000,虽然我最后算出的结果不超过int(只有16位编译器的unsigned int 是65535,现在是),但是在我运算的过程里(进行除法之前)超过了int类型的范围,这时候我们就需要强制类型转换来消除错误,但一直强制转换会有些麻烦,这个时候用1LL就方便了。
二、如何使用1LL
#include <stdio.h> #include <stdlib.h> int main() { int a = * / 1000; printf("%d", a); system("pause"); return 0; }
这里明显是答案错误,说明这句话是会超出范围的,当然我们可以通过强制转换类型达到效果,只不过最后还要转回成int类型过于麻烦,这里我们就使用1LL,具体看下面。
#include <stdio.h> #include <stdlib.h> int main() { int a = 1LL * * / 1000; printf("%d", a); system("pause"); return 0; }

这时候就运行正确了,1LL会在运算时把后面的临时数据扩容成long long类型,再在赋值给左边时转回int类型。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/114215.html
