0

是否都声明和启动一个长整数?

我希望这对这个论坛来说不是太基本的问题。我想知道上述两个语句是否实现相同的事情,即声明一个长整数变量 num 并将其初始化为 24。谢谢。

4

5 回答 5

6

long int num = 24;int num = 24L一样吗?

他们是不同的。

第一个“创建”一个类型变量,long int并将int值 24隐式转换为long int赋值前的类型。第二个“创建”一个类型变量,int并将long int值 24隐式转换为int赋值前的类型。

于 2013-03-31T12:39:06.707 回答
4

不,long int声明一个 long int,并int声明一个 int 变量。变量的类型从不取决于它被“初始化”的值(更准确地说,分配给)。因此,当且仅当类型long intint在您的环境中相同时,这两个声明是相同的。

于 2013-03-31T12:36:27.597 回答
2

不完全是。long int并且int不能保证,但应该是不同的尺寸。

long int num = 24;

这是安全24的,就像 int 一样,即(隐式)提升为long int.

int num = 24L;

一般来说,这并不安全。24L定义 a long int,即“截断”为int,如果sizeof(int)<sizeof(long int)可能有问题。

为什么是“一般”和“可以”?因为在这种情况下,两件事都是一样的,而且是安全的。但是假设执行以下操作:

int num = xL;

可以容纳但不能x容纳的大数字在哪里?然后你有一个溢出。long intint

于 2013-03-31T12:39:58.560 回答
1

不,变量的类型由变量的类型定义,仅由其左侧的类型定义:

  • long int num将变量声明num为 long int;
  • int num将变量声明num为 int。

同时,等号的右边也是独立定义的。

  • 24是一个整数;
  • 24L是一个长整数

右手边(在这种情况下是24or 24L)可能会被强制(改变)以适应左手边(在这种情况下是变量num),但绝不会反过来。

于 2013-03-31T12:38:48.327 回答
1

需要区分变量的类型和用于初始化变量的常量的类型。

第一个声明声明了一个long int变量并将其初始化为值24L(将整数常量转换为 后得到的值24long int。第二个声明声明一个int变量并将其初始化为该值24(这是您将长整型常量24L转换为. 后得到的值int。)

于 2013-03-31T12:39:57.397 回答