长长和长长的区别
Difference between long and long long
what is the difference between The long and long long.
i'm using 64bit windows sysem.
for me sizes and ranges of long and long long are same.
Answer me in detail
#include<stdio.h>
int main()
{
printf("long size: %d\n",sizeof(long));
printf("long long size: %d\n\n",sizeof(long long));
long value1=9223372036854775807;
long long value2=9223372036854775807;
printf("Max Limits\n");
printf("value1: %li\n",value1);
printf("value2: %lli\n\n",value2);
//overflow of the range
value1++;
value2++;
printf("value1: %li\n",value1);
printf("value2: %lli\n",value2);
/* OutPut OutPut OutPut
long size: 8
long long size: 8
Max Limits
value1: 9223372036854775807
value2: 9223372036854775807
value1: -9223372036854775808
value2: -9223372036854775808*/
}
Difference between long
and long long
.
long
的最小范围为 +/-(231 - 1).
long long
的最小范围为 +/-(263 - 1).
下面的代码具有不同的可移植性。
long value1 = 9223372036854775807; // Not always portable.
long long value2 = 9223372036854775807; // OK
即使 long
和 long long
具有相同的范围(它们在其他实现中可能不同),它们仍然是不同的类型,因此使用 _Generic
创建不同的功能。
#define foo(X) _Generic((X), \
long: "Blue", \
long long: "No red!" \
)
int main() {
puts(foo(1L));
puts(foo(1LL));
}
输出
Blue
No red!
C 类型的目的是灵活的,因此它们可以适应不同 C 实现中的不同情况。因此,在某些 C 实现中,long
和 long long
具有相同的宽度(用于值的位数)和大小(总字节数,包括填充)。 (其他一些类型可以大小相同。例如,short
和 int
可以相同。)
在 long
和 long long
具有相同宽度和大小的 C 实现中,它们之间没有算术差异。存在技术差异。特别是,指向 long
的指针与指向 long long
的指针是不同的类型,您不应在需要另一个的地方使用一个。
what is the difference between The long and long long. i'm using 64bit windows sysem. for me sizes and ranges of long and long long are same. Answer me in detail
#include<stdio.h>
int main()
{
printf("long size: %d\n",sizeof(long));
printf("long long size: %d\n\n",sizeof(long long));
long value1=9223372036854775807;
long long value2=9223372036854775807;
printf("Max Limits\n");
printf("value1: %li\n",value1);
printf("value2: %lli\n\n",value2);
//overflow of the range
value1++;
value2++;
printf("value1: %li\n",value1);
printf("value2: %lli\n",value2);
/* OutPut OutPut OutPut
long size: 8
long long size: 8
Max Limits
value1: 9223372036854775807
value2: 9223372036854775807
value1: -9223372036854775808
value2: -9223372036854775808*/
}
Difference between
long
andlong long
.
long
的最小范围为 +/-(231 - 1).
long long
的最小范围为 +/-(263 - 1).
下面的代码具有不同的可移植性。
long value1 = 9223372036854775807; // Not always portable.
long long value2 = 9223372036854775807; // OK
即使 long
和 long long
具有相同的范围(它们在其他实现中可能不同),它们仍然是不同的类型,因此使用 _Generic
创建不同的功能。
#define foo(X) _Generic((X), \
long: "Blue", \
long long: "No red!" \
)
int main() {
puts(foo(1L));
puts(foo(1LL));
}
输出
Blue
No red!
C 类型的目的是灵活的,因此它们可以适应不同 C 实现中的不同情况。因此,在某些 C 实现中,long
和 long long
具有相同的宽度(用于值的位数)和大小(总字节数,包括填充)。 (其他一些类型可以大小相同。例如,short
和 int
可以相同。)
在 long
和 long long
具有相同宽度和大小的 C 实现中,它们之间没有算术差异。存在技术差异。特别是,指向 long
的指针与指向 long long
的指针是不同的类型,您不应在需要另一个的地方使用一个。