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

2024-12-15 15:33:57
推荐回答(5个)
回答1:

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

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

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

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

  4. 参考大数运算

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

  5. 定义示例如下

    //windows的vc /vs开发环境中
    __int64 i = 0;
    //linux gcc/g++编译环境中
    unsigned long long i = 0

回答2:

非常简单,实用typedef关键字即可。
如typedef long long bit64_t;即定义一个64位的变量,而unsigned long 为32位的类型。不过long long是C99标准新加的,64位长整形,某些老古董编译器不支持该类型,所以如果要使用的话要注意编译器对C标准的支持,如果不支持可以使用编译器自定义的长整形(如VC的__int64)。

回答3:

1 如果系统支持64为整型,可以直接使用。
如VC/VS可以使用_int64, 而gcc可以使用long long。
2 如果系统不支持,可以使用字符串模拟。
如用字符串"11223344556677889900"表示一个大数。

回答4:

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

回答5:

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