首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在赋值变量时,1024和1024L有什么不同?

在赋值变量时,1024和1024L有什么不同?
EN

Stack Overflow用户
提问于 2019-07-31 21:33:21
回答 1查看 457关注 0票数 0

有什么不同?当使用printf("%ld")时,它们给出相同的输出

代码语言:javascript
复制
long x = 1024;
long y = 1024L;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-31 21:57:53

在C源代码中,1024int1024Llong int。在赋值过程中,右侧的值将转换为左操作数的类型。只要遵守操作数组合的规则,并且右边的值在左操作数的范围内,就没有区别--值保持不变。

通常,不带后缀的十进制常量是int,而带L的十进制常量是long int。但是,如果它的值太大而无法用通常的类型表示,它将自动成为下一个更大的类型。例如,在最大int为2147483647的C实现中,源代码中的常量3000000000将是long int,即使它没有后缀。(请注意,此规则意味着源代码中的同一常量在不同的C实现中可以有不同的类型。)如果long int不够大,它将是long long int。如果这还不够大,它可以是带符号的扩展整数类型(如果实现支持带符号的扩展整数类型)。

上面的规则适用于十进制常量。还有十六进制常量(以0x0X开头)和八进制常量(以0开头-020是十六的八进制,不像20是十进制的二十),它们可能有有符号类型,也可能有无符号类型。不同的整数类型很重要,因为溢出和转换的行为因类型而异。很容易将整数运算视为理所当然并假定它们有效,但重要的是要了解细节以避免出现问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57292046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档