c语言中如何定义比unsigned long整型变量更大的整型变量?

我在做计算器,想输出一个12位的整数,请问如何定义比unsigned long整型变量更大的整型变量?谢谢!

  比unsigned long类型更大的数据类型是unsigned long long,此类型一般用于表示64位的整型变量,在vc开发环境中一般被typedef成__uint64。

    long long 类型的范围是:-9223372036854775808~9223372036854775807

    如果只用正数可以考虑用unsigned long long范围是:0~18446744073709551615

    如果需要更大的数字可以考虑使用 数组来储存

    参考大数运算

    http://baike.baidu.com/link?url=k8bazo0BLv6YybBE1ZBBnFvoLVrXLiXkGg6w7tsMsZm6ToUPgxhhaDN6o53YjCGl0T69qUFkfzF-RbPFxaGa_a

    定义示例如下

    //windows的vc /vs开发环境中
    __int64 i = 0;
    //linux gcc/g++编译环境中
    unsigned long long i = 0
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-08
非常简单,实用typedef关键字即可。
如typedef long long bit64_t;即定义一个64位的变量,而unsigned long 为32位的类型。不过long long是C99标准新加的,64位长整形,某些老古董编译器不支持该类型,所以如果要使用的话要注意编译器对C标准的支持,如果不支持可以使用编译器自定义的长整形(如VC的__int64)。
第2个回答  推荐于2018-03-15
1 如果系统支持64为整型,可以直接使用。
如VC/VS可以使用_int64, 而gcc可以使用long long。
2 如果系统不支持,可以使用字符串模拟。
如用字符串"11223344556677889900"表示一个大数。本回答被提问者和网友采纳
第3个回答  2014-10-24

你可以定义 long long类型,但是需要你的编译器支持。

追问

我试了,编译器不支持,我用的c51,有什么编译器支持long long 类型的吗?

追答

c++的编译器如vs系列是支持 long long类型的。

第4个回答  2018-03-15
unsigned double 和unsigned float 是不能用的,因为float 和double 的第一个位默认是符号位,而 unsigned 是使得符号位无效这样定义无意义。
某些编译器下unsigned float 和 unsigned double会被自动转换成unsigned int 类型
用long long 这是最大的类型