C语言中long long的用法

C语言与C#中long的含义与用法 在C语言和C#中,long是一种用于表示长整型的数据类型。无论是在C语言还是C#中,long的声明方式相似,并且都需要使用后缀"L"来表示长整型常量。在上面的示例中,我们声明了一个名为"num"的long变量,并将其初始化为1234567890123456。在C语言和C#中,关键字"long"用于声明长整型变量。本文将详细介绍在C语言和C#中long的含义和用法,并提供相应的源代码示例。在上面的示例中,我们声明了一个名为"num"的long变量,并将其初始化为1234567890。 阅读详情
 
C语言中long long的用法
2010年05月31日 星期一 下午 05:53
http://www.awuit.com/c-language-the-usage-of-long-long/

阿吴 | C/C++ | 十一月, 03 2009 | 5 Comments

在分析BT代码的过程中,遇到了这样的定义:long long line_position;很是纳闷,在C语言中我还没有见过这样的写法,网上搜了,资料也很少,最后在C语言标准与实现这本书中找到了关于long long的说法。在C语言的C99标准扩展了新的整数类型 long long,long是32位宽,占4个字节,long long通常被定义成 64 位宽,也就可以实现了在32位机器上可以扩展8字节的数据,GUN C也支持,当然在64位平台上就存在这个问题了。C99标准并没有硬性规定具体到某种平台上的某种整数类型究竟占用多少字节、能够表示多大范围的数值等, 只是给出一条原则和一个参考数值集合,只要同时满足这两方面条件就算是符合 C 标准。
之后,我查看了C99标准:
—The rank of long long int shall be greater than the rank of long int,which
shall be greater than the rank of int,which shall be greater than the rank of short
int,which shall be greater than the rank of signed char.

意思是说:
long long 的级别高于 long ,long 的级别高于 int ,int 的级别高于 short ,short 的级别高于 char 。(另外有 _Bool 永远是最低级别)。级别高的整数类型的宽度大于等于级别较低的整数类型。


编译long long需要支持C99标准的编译器才行,VC并不支持,但有对应的类型__int64


C++ __int64用法

http://341871.blog.51cto.com/331871/71253



  在做ACM题时, 经常都会遇到一些比较大的整数。而常用的内置整数类型常常显得太小了:其中long 和 int 范围是[-2^31,2^31),即-2147483648~2147483647。而unsigned范围是[0,2^32),即0~4294967295。也就 是说,常规的32位整数只能够处理40亿以下 的数。
  那遇 到比40亿要大的数怎么办呢?这时就要用到C++的64位扩展 了。不同的编译器对64位整数的扩展有所不同。基于ACM的需 要,下面仅介绍VC6.0与g++编译器的 扩展。
  VC的64位整数 分别叫做__int64与unsigned __int64,其范 围分别是[-2^63, 2^63)与[0,2^64),即-9223372036854775808~9223372036854775807与0~18446744073709551615(约1800亿亿)。对64位整数 的运算与32位整数基本相同,都支持四则运算与位运算等。当进行64位与32位的混 合运算时,32位整数会被隐式转换成64位整 数。但是,VC的输入输出与__int64的兼容 就不是很好了,如果你写下这样一段代码:
1 __int64 a;
2 cin >> a;
3 cout << a;

那么,在 第2行会收到“error C2679: binary '>>' : no operator defined which takes a right-hand operand of type '__int64' (or there is no acceptable conversion)”的错 误;在第3行会收到“error C2593: 'operator <<' is ambiguous”的错误。那是不是就不能进行输入输出呢?当然不是,你可以使用C的写 法:
scanf("%I64d",&a);
printf("%I64d",a);
就可以正确输入输出了。当使用unsigned __int64时,把"I64d"改为"I64u"就可以 了。
  OJ通常使 用g++编译器。其64位扩展方 式与VC有所不同,它们分别叫做long long 与 unsigned long long。处理规 模与除输入输出外的使用方法同上。对于输入输出,它的扩展比VC好。既可以使用
1 long long a;
2 cin>>a;
3 cout<<a;
也可以使用
scanf("%lld",&a);
printf("%lld",a);

使用无符号数时,将"%lld"改成"%llu"即可。
  最后我补充一点:作为一个特例,如果你使用的 是Dev-C++的g++编译器,它使用的是"%I64d"而非"%lld"。


__int64的printf问题!

http://blog.chinaunix.net/u/19782/showart_403061.html

把Linux的东西移植到Windows 下, 问题真是多, 有时候感觉很是奇怪! 今天有遇到了一个!

__int64在 Windows下怎么输出的问题? 我还以为是强制转换的时候出问题了, 查了好长时间!

下 面是测试代码, 已经通过Windws, Linux两个平台的测试了!

#include <stdio.h>

#ifdef _WIN32
typedef unsigned __int64 uint64_t;
#else
typedef unsigned long long uint64_t;
#endif

typedef unsigned int uint32_t;
typedef unsigned short uint16_t;
typedef unsigned char uint8_t;

int main(int argc, char *argv[])
{
uint32_t t321, t322, t323;
uint64_t t641, t642, t643;
uint8_t *p;

uint8_t t[64] =
{
0x4E, 0x7C, 0x00, 0x00, 0x00, 0x00,
0x4E, 0x7C, 0x00, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x00, 0x00
};

printf(
"sizeof(uint64_t) = %d\n"
"sizeof(uint32_t) = %d\n"
, sizeof(uint64_t), sizeof(uint32_t));

p = t;
t321 = *(uint32_t *)p; p += 6;
t322 = *(uint32_t *)p; p += 6;
t323 = *(uint32_t *)p; p += 6;

printf("t321[%X].%d t322[%X].%d t323[%X].%d\n"
, t321, t321, t322, t322, t323, t323);

p = t;
t641 = *(uint32_t *)p; p += 6;
t642 = *(uint32_t *)p; p += 6;
t643 = *(uint32_t *)p; p += 6;

#ifdef _WIN32
printf("t641[%I64X].%I64d t642[%I64X].%I64d t643[%I64X].%I64d\n"
, t641, t641, t642, t642, t643, t643);
#else
printf("t641[%llX].%lld t642[%llX].%lld t643[%llX].%lld\n"
, t641, t641, t642, t642, t643, t643);
#endif

t641 = 0x1122334455667788;

#ifdef _WIN32
printf("%I64X %I64d \n", t641, t641);
#else
printf("%llX %lld \n", t641, t641);
#endif

return 0;
}


/*
Test Env:
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
    Microsoft Windows 2000 [Version 5.00.2195]

Result:
sizeof(uint64_t) = 8
sizeof(uint32_t) = 4
t321[7C4E].31822 t322[7C4E].31822 t323[4].4
t641[7C4E].31822 t642[7C4E].31822 t643[4].4
1122334455667788 1234605616436508552

--------------------------------------
Test Env:
    gcc version 3.2.3 20030502 (Red Hat Linux 3.2.3-47.3)

Result:
sizeof(uint64_t) = 8
sizeof(uint32_t) = 4
t321[7C4E].31822 t322[7C4E].31822 t323[4].4
t641[7C4E].31822 t642[7C4E].31822 t643[4].4
1122334455667788 1234605616436508552
*/

在 进行移植的时候可能用的上的:
#ifdef _WIN32
#  define APR_UINT64_T_HEX_FMT     "llx"
#else
#  define APR_UINT64_T_HEX_FMT     "I64x"
#endif

example:
     sprintf(buf, "%" APR_UINT64_T_HEX_FMT, var);

#define HOST_WIDEST_INT_PRINT_DEC       "%I64d"
#define HOST_WIDEST_INT_PRINT_UNSIGNED  "%I64u"
#define HOST_WIDEST_INT_PRINT_HEX       "0x%I64x"

C语言中的long关键字的含义及用法 有符号的long类型可以表示负数和正数,而无符号的long类型只能表示非负数。需要注意的是,在给long类型的变量赋值时,如果赋值的整数值超过了long类型的取值范围,可能会导致溢出的问题。在上面的代码中,我们声明了三个long类型的变量a、b和c。变量a和b都是有符号的long类型,变量c是无符号的long类型。除了声明long类型的变量之外,我们还可以使用long类型的修饰符来修改其他类型的变量。来显式指定整数值是long类型或无符号long类型,以确保赋值的整数值不会超过long类型的范围。 阅读详情

相关推荐

【扫地机器人】详细介绍扫地机器人软硬件测试和场景化测试

本文提出2025版扫地机器人全生命周期测试方案,涵盖实验室仿真、硬件台架、客户实景等全流程验证。测试以"清洁率≥95%、覆盖率≥98%、MTBF≥1000h"为核心指标,采用数字孪生与120套真实场景结合的双V模型。重点包括:传感器精度(LDS误差<±10mm)、清洁系统性能(10g粉尘吸入率≥99%)、动力续航(800次循环容量保持≥80%)等硬件测试;以及SLAM重定位(误差<5cm)、AI识别(mAP>92%)等软件验证。方案特别针对宠物家庭(毛发缠绕率≤3%)、

2501_92897788的博客 2282

long long类型

long long在win32中是确实存在,长度为8个字节;定义为LONG64。 记住它表示的是64位即可-----但对于不同的系统,在使用前还是测试一下为好 long long是C++的64位整型的基本类型,“现任”长整型。 long long占用8个字节,数据表示从int的【-2^31,2^31-1],升级到【-2^63,2^63-1】。 long long是C++的正式标准,这也就意味着,该类型不会因为编译器或者开发平台的不同而有所差异,放之四海而皆准,而且与一些系统函数、类库都有很好的交互(如常

baidu_41553551的博客 2万+

HWSD全球土壤数据下载处理

下载地址: http://www.fao.org/soils-portal/soil-survey/soil-maps-and-databases/harmonized-world-soil-database-v12/en/

江北20190411的博客 3万+

c语言long和long long的取值范围

溢出和取值范围 C语言的整型溢出问题 整数溢出 int、long int 、long long int 占用字节 《C和指针》中写过:long与int:标准只规定long不小于int的长度,int不小于short的长度。 double与int类型的存储机制不同,long int的8个字节全部都是数据位,而double是以尾数,底数,指数的形式表示的,类似科学计数法,因此double比int能表...

一条二哈 19万+

聚类分析(超全超详细版)

聚类分析是一种典型的无监督学习, 用于对未知类别的样本进行划分,将它们按照一定的规则划分成若干个类族,把相似(距高相近)的样本聚在同一个类簇中, 把不相似的样本分为不同类簇,从而揭示样本之间内在的性质以及相互之间的联系规律 聚类算法在银行、零售、保险、医学、军事等诸多领域有着广泛的应用 聚类分析基础 聚类分析的概念 聚类分析是根据在数据中发现的描述对象及其关系的信息,将数据对象分组。目的是...

Gfqwy2021 22万+

如何使用superpowers

"这个 bug 帮我修一下" → 我会自动走 systematic-debugging → TDD → verify 流程。- "帮我添加一个登录功能" → 我会自动走 brainstorming → plan → TDD → verify 流程。只要任务有 1% 的可能性适用某个技能,我就会先调用它再行动。→ TDD(测试驱动开发)→ verification(验证)→ code review(代码审查)提出需求 → brainstorming(头脑风暴)→ writing-plans(编写计划)

xiaojingjianqiang的博客 610

C语言(CED)与long long相关的知识

在写代码时,有时int、double定义的变量的范围远远小于题目要求的范围,那么现在就是使用long long的时候 1、 long long 是C99标准对整型类型做的一个扩展,每个long long类型的变量可以占8字节,每个字节8位,一共64位。其表示的数范围是-9223372036854775808~9223372036854775807。 2、long long在输出的时候,与int...

Cat 1万+

DataX对接数据如何在ODS加密脱敏数据(插件开发)

datax对接mysql数据,对姓名只保留姓,名变成**。对这种简单的脱敏,可以不用修改datax源码,直接在配置文件上实现。

大模型大数据攻城狮的专栏 993

C语言中的整数类型(short,int,long和long long)

C语言的整数类型shortintlong和long long提供了从 16 位到 64 位的灵活选择。通过理解它们的范围、内存占用和使用场景,你可以在编程中做出更优决策。

zdoeo的博客 3066

YOLOv11模型改进-模块-引入空间池化模块StripPooling 解决遮挡、小目标

本文介绍了一种新的空间池化策略,称为,用于场景解析。结构:包括两个平行路径,分别进行水平和垂直方向的条带池化,然后通过1D卷积层进行特征调整。:结合了条带池化和传统的空间池化,分别用于捕捉长距离和短距离的依赖关系。作用捕捉长距离依赖:通过长条形的池化窗口,有效捕捉分布离散的区域之间的关系。避免不相关信息干扰:窄条形的池化窗口有助于捕捉局部上下文,防止不相关区域干扰标签预测。提高场景解析性能:在多个基准数据集上,证明了这种方法能够显著提升场景解析的效果。

qq_64693987的博客 4204

思维链:让AI更接近人类思维的技术

本文将探讨一种名为“思维链”的技术,它旨在让AI更接近人类思维。文章首先介绍了问题背景与核心概念,接着讲解了算法原理和数学模型,随后阐述了系统分析与架构设计,最后通过项目实战展示了思维链的实际应用,并提供了最佳实践和小结。思维链是一种旨在模拟人类思维过程的技术,它通过构建一系列相互关联的思维方式,实现对复杂问题的分析和解决。思维链算法是一种基于人类思维过程的人工智能算法,它通过构建一系列思维链,实现对问题的分析和解决。智能问答系统是一种常见的人工智能应用,它能够回答用户提出的各种问题。

AI天才研究院 942

c语言 long 用法,C语言中long long的用法

http://www.awuit.com/c-language-the-usage-of-long-long/阿吴 | C/C++ | 十一月, 03 2009 | 5 Comments在分析BT代码的过程中,遇到了这样的定义:long long line_position;很是纳闷,在C语言中我还没有见过这样的写法,网上搜了,资料也很少,最后在C语言标准与实现这本书中找到了关于long long...

weixin_39623713的博客 1055

Sentaurus TCAD建模:宽温区n型FinFET模型校准与低温仿真分析

本文基于Sentaurus TCAD平台,建立了n型FinFET的宽温区(233K-393K)仿真模型,解决了低温(73K-193K)仿真失效问题。研究对比了Sprocess工艺仿真与SDE几何建模两种方法,分析了载流子冻析效应、不完全电离和迁移率退化等低温物理机制。通过优化模型参数,实现了在233K、313K和393K条件下仿真误差小于10%,并建立了符合物理趋势的低温外推模型。研究提供了完整的Sentaurus TCAD代码实现,包括器件结构定义、物理模型配置和温度相关参数校准,为宽温区FinFET仿真

huanghm88的专栏 264

c语言long的用法及作用,c语言中long long的用法

在分析BT代码的过程中,遇到了这样的定义:long long line_position;很是纳闷,在C语言中我还没有见过这样的写法,网上搜了,资料也很少,最后在C语言标准与实现这本书中找到了关于long long的说法。在C语言的C99标准扩展了新的整数类型 long long,long是32位宽,占4个字节,long long通常被定义成 64 位宽,也就可以实现了在32位机器上可以扩展8字节...

weixin_42395002的博客 6632

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

c语言中long long的用法

在分析BT代码的过程中,遇到了这样的定义:long long line_position;很是纳闷,在C语言中我还没有见过这样的写法,网上搜了,资料也很少,最后在C语言标准与实现这本书中找到了关于long long的说法。在C语言的C99标准扩展了新的整数类型 long long,long是32位宽,占4个字节,long long通常被定义成 64 位宽,也就可以实现了在32位机器上可以扩展8字节

qq_35567127的博客 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

c语言long的程序,C语言中long long的用法

http://www.awuit.com/c-language-the-usage-of-long-long/阿吴 |C/C++ | 十一月, 03 2009 |5 Comments在分析BT代码的过程中,遇到了这样的定义:long long line_position;很是纳闷,在C语言中我还没有见过这样的写法,网上搜了,资料也很少,最后在C语言标准与实现这本书中找到了关于long long的说...

weixin_42395980的博客 1473

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

c语言中unsigned long,unsigned long 的用法

在很多函数调用里面都有 unsigned long 参数,事实上他不只是传递一个数(当然大多数情况下就传递一个数),更重要的是通过强转他还能代表一个地址,即当一个指针使用,下面就举例说明。(指针与unsigned long什么关系?没有关系,C中值的类型并非值本身的属性,而是取决于它的使用方式。)一,内核定时器的使用。内核定时器一般分为声明、注册、删除等操作。#include Struct tim...

weixin_35017289的博客 7406

C语言_int64用法,C语言中long long的用法 C++ __int64用法 __int64的printf问题

在分析BT代码的过程中,遇到了这样的定义:long long line_position;很是纳闷,在C语言中我还没有见过这样的写法,网上搜了,资料也很少,最后在C语言标准与实现这本书中找到了关于long long的说法。在C语言的C99标准扩展了新的整数类型 long long,long是32位宽,占4个字节,long long通常被定义成 64 位宽,也就可以实现了在32位机器上可以扩展8字节...

weixin_36030121的博客 1436

C语言中short、int与long用法总结

接上一篇文章 转自 http://hi.baidu.com/zeasa/blog/item/e142c0ddad6950ef76c63894.html 下面是我关于C语言中各种数据类型长度的总结:(参考The C Programming Lan

3870

C语言中long long的用法 C++ __int64用法 __int64的printf问题

C语言中long long的用法 在分析BT代码的过程中,遇到了这样的定义:long long line_position;很是纳闷,在C语言中我还没有见过这样的写法,网上搜了,资料也很少,最后在C语言标准与实现这本书中找到了关于long long的说法。在C语言的C99标准扩展了新的整数类型 long long,long是32位宽,占4个字节,long long

PiCheeng的专栏 3874

c语言long的用法及作用,long的用法和例句,包括long常用短语解释和词组意思翻译,同义词【澳典网ODict.Net】...

Longlong的音标和读音:DJ音标发音: [lɔ:ŋ, lɔŋ]KK音标发音: [lɔŋ, lɑŋ]long的词性:NONE(无词性)1. American surgeon and pioneer anesthetist who was among the first (1842) to use ether as an anesthetic.朗,克劳福德·威廉森:(1815-1878) 美国外...

weixin_30667831的博客 2228

C语言中getopt()和getopt_long()函数的用法

一、命令行参数的使用 C程序的主函数有两个参数,其中,第一个参数是整型,可以获得包括程序名字的参数个数,第二个参数是字符数组指针或字符指针的指针,可以按顺序获得命令行上各个字符串参数。其原形是: int main(int argc, char *argv[]);或者是: int main(int argc, char **argv);比如在命令行输入: ./test hel

为幸福写歌的博客 1万+
上一篇: 【转】 可变参数表的用法 stdarg
下一篇: 优化C语言代码(程序员必读)
junecau
博客等级 码龄19年 125粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值