是否都声明和启动一个长整数?
我希望这对这个论坛来说不是太基本的问题。我想知道上述两个语句是否实现相同的事情,即声明一个长整数变量 num 并将其初始化为 24。谢谢。
long int num = 24;和int num = 24L一样吗?
他们是不同的。
第一个“创建”一个类型变量,long int并将int值 24隐式转换为long int赋值前的类型。第二个“创建”一个类型变量,int并将long int值 24隐式转换为int赋值前的类型。
不,long int声明一个 long int,并int声明一个 int 变量。变量的类型从不取决于它被“初始化”的值(更准确地说,分配给)。因此,当且仅当类型long int和int在您的环境中相同时,这两个声明是相同的。
不完全是。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
不,变量的类型由变量的类型定义,仅由其左侧的类型定义:
long int num将变量声明num为 long int;int num将变量声明num为 int。同时,等号的右边也是独立定义的。
24是一个整数;24L是一个长整数右手边(在这种情况下是24or 24L)可能会被强制(即改变)以适应左手边(在这种情况下是变量num),但绝不会反过来。
需要区分变量的类型和用于初始化变量的常量的类型。
第一个声明声明了一个long int变量并将其初始化为值24L(将整数常量转换为 后得到的值24)long int。第二个声明声明一个int变量并将其初始化为该值24(这是您将长整型常量24L转换为. 后得到的值int。)